加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

R在Windows上:字符编码地狱

发布时间:2020-12-13 20:53:03 所属栏目:Windows 来源:网络整理
导读:我试图在Windows上将一个编码为OEM-866(Cyrillic charset)的CSV导入到R中。我也有一个已经被转换成UTF-8的副本的副本。一旦指定了编码,这两个文件都可以在系统上的所有其他应用程序读
我试图在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
??????μ????? ???????????????°?? ???…?¨?????…?                        

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读