此外,在Linux上,R可以使用指定的编码读取这些特定的文件。我也可以在Windows上阅读CSV,如果我没有指定“fileEncoding”参数,但这会导致无法读取的文本。当我在Windows上指定文件编码时,对于OEM和Unicode文件,我总是收到以下错误:
原始OEM文件导入:
> oem.csv <- read.table("~/csv1.csv",sep=";",dec=",",quote="",fileEncoding="cp866") #result: failure to import all rows Warning messages: 1: In scan(file,what,nmax,sep,dec,quote,skip,nlines,na.strings,: invalid input found on input connection '~/Revolution/RProject1/csv1.csv' 2: In scan(file,: number of items read is not a multiple of the number of columns
UTF-8 w / o BOM文件导入:
> unicode.csv <- read.table("~/csv1a.csv",fileEncoding="UTF-8") #result: failure to import all row Warning messages: 1: In scan(file,: invalid input found on input connection '~/Revolution/RProject1/csv1a.csv' 2: In scan(file,: number of items read is not a multiple of the number of columns
区域信息:
> 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"
在Windows上有什么关于这个的负责?在这一点上,我几乎尝试了一切,除了打开窗户。
谢谢
(其他尝试失败):
>Sys.setlocale("LC_ALL","en_US.UTF-8") #OS reports request to set locale to "en_US.UTF-8" cannot be honored >options(encoding="UTF-8") #now nothing can be imported > noarg.unicode.csv <- read.table("~/Revolution/RProject1/csv1a.csv",quote="") #result: mangled cyrillic > encarg.unicode.csv <- read.table("~/Revolution/RProject1/csv1a.csv",encoding="UTF-8") #result: mangled cyrillic
oem.csv <- read.table("~/csv1.csv",encoding="cp866")
不过,如果有一个更完整的答案,可能会有一些不明显的障碍。简而言之:可以在Windows上使用Cyrillic(在我的情况下为Win 7)。
您可能需要尝试一些可能的编码才能使工作正常。对于文本挖掘,一个重要的方面是获取输入变量来匹配数据。 Encoding()的功能非常有用,参见iconv()。因此,可以看到您的本机参数。
Encoding(variant <- "Минемум")
在我的情况下,编码是UTF-8,尽管这可能取决于系统设置。所以,我们可以使用UTF-8和UTF-8-BOM来测试结果,并在记事本中使用一行拉丁语和一条西里尔字样制作一个测试文件。
UTF8_nobom_cyrillic.csv& UTF8_bom_cyrillic.csv
part2,part3,part4 Минемум конкыптам,тхэопхражтуз,ед про
这可以导入到R中
raw_table1 <- read.csv("UTF8_nobom_cyrillic.csv",header = FALSE,sep = ",quote = "\"",dec = ".",fill = TRUE,comment.char = "",encoding = "UTF-8") raw_table2 <- read.csv("UTF8_bom_cyrillic.csv",encoding = "UTF-8-BOM")
这些结果是为我的BOM常规西里尔字体(raw_table1)和控制台中的乱码。
part2,part4 ŠŠøŠ½ŠµŠ¼ŃŠ¼ ŠŗŠ¾Š½ŠŗŃ‹ŠæŃ‚Š°Š¼ тхѨŠ¾ŠæŃ…Ń€Š°Š¶Ń‚ŃŠ
然而,更重要的是,脚本不允许访问它。
> grep("Минемум",as.character(raw_table2[2,1])) integer(0)
没有BOM UTF-8的结果对于view(raw_table1)和控制台都是这样的。
part2,part4 <U+041C><U+0438><U+043D><U+0435><U+043C><U+0443><U+043C> <U+043A><U+043E><U+043D><U+043A><U+044B><U+043F><U+0442><U+0430><U+043C> <U+0442><U+0445><U+044D><U+043E><U+043F><U+0445><U+0440><U+0430><U+0436><U+0442><U+0443><U+0437> <U+0435><U+0434> <U+043F><U+0440><U+043E>
> grep("Минемум",as.character(raw_table1[2,1])) 1
因此,有可能在Windows中使用非标准字符,这取决于您的确切目标。
我经常使用非英语拉丁字符,UTF-8允许在Windows 7中工作,没有任何问题。 “WINDOWS-1252”对于导出到Excel等Microsoft读者来说非常有用。
PS俄语词在这里生成了http://generator.lorem-ipsum.info/_russian,所以基本上没有意义。PPS你提到的警告仍然没有明显的重要影响。