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

时间:2012-06-08 20:20:35

标签: r utf-8 locale

我尝试在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]

实际上会显示汉字。

如果我把它变成矩阵,它也会显示中文字符,但如果我试着查看数据(命令视图(数据)或修复(数据)),它会再次显示为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持续展示中文字符的帮助将不胜感激......

2 个答案:

答案 0 :(得分:2)

在构建character时,不是错误,更是对基础类型系统转换(factor类型和data.frame类型)的误解。

您可以先使用data <-read.csv("mydata.csv", encoding="UTF-8", stringsAsFactors=FALSE)开始,这样可以使您的中文字符属于character类型,因此通过打印出来,您应该会看到您期待的内容。

@nograpes:同样x=c('中華民族');x; y <- data.frame(x, stringsAsFactors=FALSE),一切都应该没问题。

答案 1 :(得分:1)

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

  

(1)下载'打开表'。

     

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

     

(3)将其保存为utf-8(如果你想要utf-8)。 (UTF-8不能解决所有问题,你必须首先知道系统中的默认编码)