【发布时间】:2015-12-11 01:20:11
【问题描述】:
有许多关于在 Windows 中将包含(UTF-8 编码)中文字符的 CSV 文件打开到 R 中的 StackOverflow 帖子。我找到的答案似乎都没有完全奏效。
如果我read.csv 和encoding="UTF-8",那么显示的汉字是编码的(<U+XXXX>,我已经手动验证过至少是正确的)。但是,如果我查询数据框以仅获取一行或一行中的特定单元格,则它会正确打印。
一篇帖子暗示这是由于字符串被键入为因素。但是,设置stringsAsFactors=FALSE 没有效果。
其他帖子说必须正确设置语言环境。我的系统语言环境显然是English_United Kingdom.1252; Windows 代码页看起来绝对不是 Unicode 友好的!如果我尝试将其更改为 en.UTF-8、en_GB.UTF-8 或 en_US.UTF-8(甚至是 UTF-8 或 Unicode)中的任何一个,我会收到一条错误消息,指出我的操作系统无法满足该请求。
如果我尝试Sys.setlocale(category="LC_ALL", locale="Chinese"),语言环境确实会更改(尽管更改为另一个 Windows 代码页;仍然没有 Unicode),但无法解析 CSV 文件。也就是说,如果我在英文语言环境中读取文件,然后切换到中文,则数据框会在控制台中正确打印出来。但是,这很笨拙,无论如何,View(myData) 现在显示 mojibake 而不是编码的 Unicode 代码点。
有什么方法可以让这一切正常工作吗?即正确的汉字从数据框回显到控制台并且View工作,读取数据时无需进行秘密握手?
我的直觉是问题出在语言环境:它应该设置为 UTF-8 语言环境,然后一切都应该 [可能] 正常工作。但是,我不知道该怎么做...
【问题讨论】:
-
为我的假设添加证据:在我的工作计算机 (OS X) 上,在控制台和
View中加载带有中文文本的 CSV 就可以了,这是我所期望的,没有到处乱混。那里的语言环境是en_GB.UTF-8... 是否可以在 Windows 中更改为 UTF-8 语言环境?