R在Windows上:字符编码地狱
我试图在Windows上将一个编码为OEM-866(Cyrillic charset)的CSV导入到R中。我也有一个已经被转换成UTF-8的副本的副本。一旦指定了编码,这两个文件都可以在系统上的所有其他应用程序读取。
此外,在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
通过将fileEncoding更改为编码可以解决您的问题,这些参数在读取功能中的工作方式不同(请参阅?read)。
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 ??????μ????? ???????????????°?? ???…?¨?????…? |
- lesson1
- windows – 使用命令行禁用以太网连接?
- windows-server-2003 – 我应该使用本机还是使用ESXi服务器
- windows-server-2003 – 确定私有IP地址
- Windows – 如何指定对.cabal中外部C库的依赖?
- 无法在Windows 7 Ultimate中添加与IIS 7的连接
- windows-server-2003 – 可以从“开始”菜单中删除“关机”
- active-directory – GPO无法应用;原因:无法访问,空闲或已
- windows server 2008 AD与DNS服务器配置时注意的问题
- windows-phone-7 – Windows手机中的SQLCE性能非常差
- .net – Windows Phone 7 XNA GUI框架
- 使用Windows命令提示符(cmd.exe)的StackOverflow
- Windows:2个站点,2个dc.如何设置角色?
- windows – 使用vbscript激活(带到前台)特定窗口
- Windows上的Meteor MongoDb连接
- .net – 我可以让我的服务让Windows无法入睡吗?
- Windows和连续扇区上的文件
- active-directory – 委派在Microsoft Exchange
- 如何在uwp windows 10中更改Package系列名称
- windows – 为当前的chef-client运行设置环境变量