在R中显示UTF-8编码的中文字符

8
我会尝试在R中打开一个UTF-8编码的包含(繁体)中文字符的.csv文件。但是出现了这样的情况,有时R会将信息显示为中文字符,有时则显示为Unicode字符。
例如:
data <-read.csv("mydata.csv", encoding="UTF-8")

data

会产生Unicode字符,而:

data <-read.csv("mydata.csv", encoding="UTF-8")

data[,1]

如果我将其转换为矩阵,它也会显示中文字符,但是如果我尝试查看数据(命令View(data)或fix(data)),它又变成了Unicode。

我向使用Mac的人寻求建议(我正在使用PC,Windows 7),其中一些人得到了全中文字符,而其他人则没有。我尝试将原始数据保存为表格,然后以这种方式将其读入R - 结果相同。我尝试在RStudio、Revolution R和RGui中运行脚本。我尝试调整区域设置(例如设置为中文),但要么R不允许我更改它,要么结果是乱码而不是Unicode字符。

我的当前区域设置为:

"LC_COLLATE=French_Switzerland.1252;LC_CTYPE=French_Switzerland.1252;LC_MONETARY=French_Switzerland.1252;LC_NUMERIC=C;LC_TIME=French_Switzerland.1252"

希望能够帮助我让R始终显示中文字符...


嗯,这看起来像是一个 bug。对于那些感兴趣的人,可以通过以下代码轻松地重现它:x=c('中華民族');x;data.frame(x)。不要尝试将该代码粘贴到 R 编辑器中,直接将其粘贴到控制台中即可。否则它将无法正常工作。 - nograpes
请查看我的回答:https://dev59.com/ZmAh5IYBdhLWcg3wDfoW - Sathish
2个回答

4
不是一个错误,更多的是对底层类型系统转换(字符类型和因子类型)的误解,在构建数据框时。您可以首先使用 data <-read.csv("mydata.csv", encoding="UTF-8", stringsAsFactors=FALSE),这将使您的中文字符成为字符类型,因此通过打印它们,您应该看到您期望的内容。
@nograpes:同样地,x=c('中華民族');x;y <- data.frame(x, stringsAsFactors=FALSE),一切都应该没问题。

1
实际上,那对我不起作用。尝试运行该代码,然后 print(y)。我已经提出了一个更直接解决问题的问题。在stackoverflow上 - nograpes
有趣的是,现在这对我起作用了(期间我换了一台不同的电脑,可能会或可能不会有所不同)。谢谢! - user1445297

2
在我的情况下,utf-8编码在我的r中不起作用。但是Gb*编码可以工作。在ubuntu中,utf8可以正常工作。首先,您需要确定操作系统中的默认编码。并将其编码为它自己。即使Excel声称以utf8保存,它也无法正确编码。

(1)下载“Open Sheet”软件。

(2)正确打开它。您可以滚动编码方法,直到在预览窗口中看到中文字符。

(3)另存为utf-8(如果您想使用utf-8)。 (UTF-8不是每个问题的解决方案,您必须首先知道系统中的默认编码)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接