r - 如何在 r 控制台中显示和输入中文(和其他非 ASCII)字符?

标签 r

我的系统:win7 Ultimate 64 英文版 + r-3.1(64) 。
这是我的 sessionInfo。

> sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252     
LC_MONETARY=English_United States.1252 LC_NUMERIC=C      
LC_TIME=English_United States.1252    

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

1.r控制台无法输入汉字
当我在 r 控制台中输入一个汉字时,它变成了乱码。

enter image description here
enter image description here

2.r控制台无法显示汉字
当我在 r 控制台中读取数据时,汉字变成了乱码。
您可以下载数据,并使用
read.table("r1.csv",sep=",")

Download Data

enter image description here

如果您不知道如何从我的网站获取数据,请参阅图表以下载数据。

enter image description here

如何设置我的电脑以在 r 控制台中正确显示和输入中文字符?
我已经更新了中文语言包,并启用了它,但问题仍然存在。

最佳答案

它可能没有很好的文档记录,但您想使用 setlocale为了使用中文。该方法也适用于许多其他语言。解决方法不是很明显 setlocale 的官方文档没有特别提到它是一种解决显示问题的方法。

> print('ÊÔÊÔ') #试试, meaning let's give it a shot in Chinese
[1] "ÊÔÊÔ" #won't show up correctly
> Sys.getlocale()
[1] "LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252"
> Sys.setlocale(category = "LC_ALL", locale = "chs") #cht for traditional Chinese, etc.
[1] "LC_COLLATE=Chinese_People's Republic of China.936;LC_CTYPE=Chinese_People's Republic of China.936;LC_MONETARY=Chinese_People's Republic of China.936;LC_NUMERIC=C;LC_TIME=Chinese_People's Republic of China.936"
> print('试试')
[1] "试试"
> read.table("c:/CHS.txt",sep=" ") #Chinese: the 1st record/observation
  V1   V2  V3 V4  V5   V6
1 122 第一 122 条 122 记录 

如果您只想更改显示编码,而不更改区域设置的其他方面,请使用 LC_CTYPE而不是 LC_ALL :
> Sys.setlocale(category = "LC_CTYPE", locale = "chs")
[1] "Chinese_People's Republic of China.936"
> print('试试')
[1] "试试"

现在,当然这仅适用于官方 R安慰。如果您使用其他 IDE,例如非常流行的 RStudio ,即使您没有加载中文区域设置,您也完全不需要执行此操作即可键入和显示中文。

从以下评论中迁移一些有用的东西:

如果数据仍然无法正确显示,我们还应该调查文件编码的问题。如果文件是 UTF-8编码,十分之一 data <- read.table("you_file", sep=',', fileEncoding="UTF-8-BOM", header=TRUE)fileEncoding="UTF-8"会做,取决于它真的有哪种编码。

但你可能想远离 UTF-BOM因为不推荐:What's different between UTF-8 and UTF-8 without BOM?

关于r - 如何在 r 控制台中显示和输入中文(和其他非 ASCII)字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24473681/

相关文章:

java - RCaller 3.1 入门

r - 使用 data.table 存储为列表元素的多个数据帧的完全外部连接

r - 使用相同数据的多个 Shiny 应用程序

regex - 如何拆分基于正则表达式条件的 R data.frame 列

r - R 中的异常处理和堆栈展开

string - 连接文本以形成要在表中使用的列名称

删除 ggplot2 + 比例中的前导零

R删除按因素分组的数据框中的异常值

r - 如何在R中的不同方面产生不同的geom_vline?

r - 将单位标签添加到 ggplot2 中的颜色渐变图例