当我使用read.csv
来读取包含带有选项encoding = "UTF-8"
的中文字符的文件时,我会得到这些神秘的代码。
通过一点比较,我意识到他们可以一对一匹配汉字,但是如何将它们转换回R中的汉字。
例如,<U+9600>
和<U+524D>
分别为"阀"
和"前"
。
答案 0 :(得分:1)
您需要更改区域设置以获取中文字符,以便进行更换:
x <- "阀"
print(x) will result in ##[1] "<U+9600>"
将对象中的区域设置保存为备份,以便我们可以像之前一样撤消区域设置
oldloc <- Sys.getlocale("LC_CTYPE")
通过输入&#34; en_US.UTF-8 &#34;更改区域设置作为第二个论点:
Sys.setlocale("LC_CTYPE", "en_US.UTF-8")
print(x) ###The result is now [1] "阀"
你也可以尝试语言环境zh_CN.UTF-8
,它也适合我。如果您搞砸了任何东西,那么您可以使用下面的内容来达到以前的状态:
Sys.setlocate("LC_CYTPE",oldloc)
我刚刚意识到OP正在使用Windows机器的评论,上面的命令对我的Mac sierra非常有用,但在Windows 7机器上产生如下警告:
Warning message: In Sys.setlocale("LC_CTYPE", "en_US.UTF-8") : OS reports request to set locale to "en_US.UTF-8" cannot be honored
但是,为了解决Windows上的上述问题,我使用了下面的stringi函数stri_trans_general
,这解决了问题并打印了所需的汉字
stringi::stri_trans_general(x, "zh")
<强>输出强>:
> stringi::stri_trans_general(x, "zh")
[1] "阀"
您可以访问here查看不同地区的区域设置。