我有这个奇怪的编码问题我的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编码的问题,但我只是不知道如何纠正它。 任何想法或建议? 谢谢。
你的例子为我工作开箱。 可以设置的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问题。
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
设定输入编码缓冲过程的系统中,特殊字符上述错误消失。