读取包含中文字符的CSV文件

时间:2015-09-14 22:34:38

标签: r utf-8 windows-7 locale

在Windows中,有很多关于打开包含(UTF-8编码)中文字符的CSV文件的StackOverflow帖子。我发现的答案似乎都没有完全奏效。

如果我read.csv encoding="UTF-8",则中文字符会显示为已编码(<U+XXXX>,我手动验证的字符至少是正确的。但是,如果我询问数据框只从一行获取一行或特定单元格,那么它就可以正确打印。

有一篇帖子暗示这是因为字符串被列为因素。但是,设置stringsAsFactors=FALSE无效。

其他帖子说必须正确设置区域设置。我的系统区域设置显然是English_United Kingdom.1252; Windows代码页看起来非常友好!如果我尝试将其更改为en.UTF-8en_GB.UTF-8en_US.UTF-8(或甚至UTF-8Unicode)中的任何一项,我会收到错误消息,说明我的操作系统无法兑现请求。

如果我尝试Sys.setlocale(category="LC_ALL", locale="Chinese"),则语言环境更改(虽然是另一个Windows代码页;但仍然没有Unicode),但无法解析CSV文件。也就是说,如果我读取英语语言环境中的文件,然后切换到中文,则数据框将在控制台中正确打印出来。但是,这很麻烦,无论如何,View(myData)现在显示mojibake而不是编码的Unicode代码点。

有没有办法让它全部运转?也就是说,正确的中文字符从数据框回显到控制台 View,而不必在读取数据时执行秘密握手?

我的直觉是问题是语言环境:它应该设置为UTF-8语言环境,然后一切都应该[可能]正常工作。但是,我不知道该怎么做......

1 个答案:

答案 0 :(得分:0)

UTF表示法很好,这意味着你的角色是在属性中读取的。 R的问题在于打印到控制台,除非您复制和粘贴输出,否则这不应该是一个大问题。写出有点棘手:你想打开一个UTF-8文件连接,然后写入该文件。