R中的字符编码

时间:2013-08-07 09:15:32

标签: r character-encoding

我正在尝试读取由SQL Server Management Studio生成的csv文件并编码为UTF-8(保存时我选择了该选项)到R版本3.0.1(x64) )通过read.csv2()。我不能R正确显示特殊字符。

如果我设置fileEncoding="UTF-8-BOM",导入将停在我有一个ÿ的行。但是,在Notepad++中打开文件时,ÿ会以UTF-8编码正确显示。我试过没有设置fileEncoding,但是特殊字符没有正确显示(当然)。

csv flie可在此处获得: https://www.dropbox.com/s/7y47i826ikq8ahi/Data.csv

如何读取csv文件并以正确的编码显示文本?

谢谢!

3 个答案:

答案 0 :(得分:4)

我找到了自己的答案。问题在于从UTF-8到系统区域设置(R中的默认编码)到fileEncoding的转换。在我使用RStudio时,我只是将默认编码更改为UTF-8,并从fileEncoding="UTF-8-BOM"中删除了read.csv。然后,读取整个csv文件,RStudio正确显示所有字符。

答案 1 :(得分:1)

那些仍然坚持这个问题的人。我的脚本能够识别“umlaute”(ä,ö,ü或ß),方法是在脚本顶部添加一行,更改字符编码options(encoding = "UTF-8")的默认选项(在我的情况下设置选项) RStudio direclty没有影响编码!)。

答案 2 :(得分:0)

就我而言,我在Docker容器(debian和R)中的R中存在此问题,当我在容器中运行locale时,所有变量都显示为空。我解决了将问题添加到Dockerfile中的问题。

ENV LANG=en_US.UTF-8
ENV LC_CTYPE=en_US.UTF-8
ENV LC_NUMERIC=es_AR.UTF-8
ENV LC_TIME=es_AR.UTF-8
ENV LC_COLLATE=en_US.UTF-8
ENV LC_MONETARY=es_AR.UTF-8
ENV LC_MESSAGES=en_US.UTF-8
ENV LC_PAPER=es_AR.UTF-8
ENV LC_NAME=es_AR.UTF-8
ENV LC_ADDRESS=es_AR.UTF-8
ENV LC_TELEPHONE=es_AR.UTF-8
ENV LC_MEASUREMENT=es_AR.UTF-8
ENV LC_IDENTIFICATION=es_AR.UTF-8
ENV LC_ALL=C.UTF-8

我在某些值上有es_AR,但我认为en_US或其他值应该有用。