输入字符中国不正确ESS回荡(Input Chinese characters not correc

2019-09-28 13:59发布

我有这个奇怪的编码问题我的Emacs和R环境。 中国文字的显示都与我.Rprofile设置好Sys.setlocale("LC_ALL","zh_CN.utf-8"); 除了输入的人的回声。

    > linkTexts[5]
          font 
    "使用帮助" 
    > functionNotExist()
    错误: 没有"functionNotExist"这个函数
    > fire <- "你好"
    > fire
    [1] "  "

正如我们所看到的,包含在矢量字符中国linkTexts ,中国的错误信息,并输入字符中国都可以完美显示,但输入字符的回声只显示为空白占位符。

sessionInfo()是在这里,这是预期中给出的Sys.setlocale("LC_ALL","zh_CN.utf-8"); 设置:

    > sessionInfo()
    R version 2.15.2 (2012-10-26)
    Platform: i386-apple-darwin9.8.0/i386 (32-bit)

    locale:
    [1] zh_CN.utf-8/zh_CN.utf-8/zh_CN.utf-8/C/zh_CN.utf-8/C

    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     

    other attached packages:
    [1] XML_3.96-1.1

    loaded via a namespace (and not attached):
    [1] compiler_2.15.2 tools_2.15.2   

而我在.emacs文件没有区域设置。

对我来说,这似乎是一个Emacs编码的问题,但我只是不知道如何纠正它。 任何想法或建议? 谢谢。

Answer 1:

你的例子为我工作开箱。 可以设置的emacs过程解码/编码与的Mx set-buffer-process-coding-system 。 一旦你找出什么编码工作(如果有的话),你可以进行更改永久使用:

(add-hook 'ess-R-post-run-hook
          (lambda () (set-buffer-process-coding-system
                      'utf-8-unix 'utf-8-unix)))

更换utf-8-unix与您所选择的编码。

我不是很相信,上面会有所帮助。 连结文字在你的例子显示良好,但火不,看起来并不像一个Emacs / ESS问题。



Answer 2:

Vitoshka酒店作出了完全正确的建议。 我只是想添加更多自己的调查结果在这里,人们可满足不同但类似的特殊字符的问题。 然而,他们可以以同样的方式来解决。

根本原因是输入编码设置为当前缓冲区的过程。 如图所示通过Mx describe-current-coding-system命令,默认缓冲过程编码设置好作输出( utf-8-unix ),但为降低输入:

    Coding systems for process I/O:
      encoding input to the process: 1 -- iso-latin-1-unix (alias: iso-8859-1-unix latin-1-unix)

      decoding output from the process: U -- utf-8-unix (alias: mule-utf-8-unix)

改变编码系统对输入到utf-8-unix ,无论是由“的Mx设置缓冲-处理-编码-系统”或添加ess-post-run-hook.emacs像由Vitoshka酒店建议的,就足够了用于解决中国汉字显示的问题。

The other problem people may meet due to this setting is special character in ESS. When trying to input special characters, you may get the error message, 错误: 句法分析器%d行里不能有多字节字符 , or invalid multibyte character in parser at line %d in English.

    > x <- data.frame(part = c("målløs", "ny"))
    错误: 句法分析器1行里不能有多字节字符

并用正确的utf-8-unix设定输入编码缓冲过程的系统中,特殊字符上述错误消失。



文章来源: Input Chinese characters not correctly echoed in ESS