这是 R 的一个长期存在的问题:它可以在 Unix 上读取非拉丁字符,但我无法在 Windows 上读取它们。多年来我在几台英文版 Windows 机器上复制了这个程序。我尝试过更改 Windows 中的本地化设置和许多其他设置,但没有效果。有人真的能够在 Windows 上读取外文文本文件吗?我认为能够读取/写入/显示 unicode 对于程序来说是一个非常漂亮的功能。
环境:
> Sys.getlocale() [1] "LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252"
The problem can be reproduced as follows:
Create simple file in a language like Russian or Arabic in a text editor and save it as UTF-8 w/o BOM.
> test_df <- read.table("test2.txt",header=FALSE, sep=";", quote="",fill=FALSE,
encoding="UTF-8",comment.char="",dec=",")
......Warning message:
......In read.table("test2.txt", header = FALSE, sep = ";", quote = "", :
......incomplete final line found by readTableHeader on 'test2.txt'
> test_df
...... V1 V2
......1 <U+043E><U+0439>!yes 9
使用read.csv()
会产生相同的结果,但减去警告。我意识到“”既可以搜索,也可以通过外部程序转换为可读字符。但我想在图表、表格、输出等中看到实际的西里尔文字,就像我在我使用过的所有其他程序中一样。
所以我几年来一直遇到这个问题。然后昨天的一天早上,我尝试了以下操作:
test_df <- read.table("items.txt",header=FALSE, sep=";",quote="",fill=FALSE,
encoding="bytes",comment.char="",dec=",")
并且encoding="bytes"
有效!我在控制台中看到了西里尔字母。然后我不得不重新安装 R(相同的版本,相同的计算机,相同的一切),解决方案消失了。我确实回顾了所有的步骤,这看起来就像魔法一样。现在 encoding="bytes"
只会产生与 encoding="pizza"
相同的垃圾 (РєРѕРЅСЊСЏРє)(参数被忽略)。
read.table 还有一个 fileEncoding
参数。我不知道它是怎么做的,但它也不起作用,甚至无法阅读英文文本。
您可以在 Windows PC 上读取非 ASCII 文本文件吗?你到底是怎么做到的?
最佳答案
尝试设置区域设置。例如,
Sys.setlocale(locale = "Russian")
请参阅 ?Sys.setlocale
了解更多信息。
关于R、Windows 和外语字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33883030/