我的系统:win7+R-3.0.2。
> Sys.getlocale()
[1] "LC_COLLATE=Chinese (Simplified)_People's Republic of China.936;LC_CTYPE=Chinese
(Simplified)_People's Republic of China.936;LC_MONETARY=Chinese (Simplified)_People's
republic of China.936;LC_NUMERIC=C;LC_TIME=Chinese (Simplified)_People's Republic of China.936"
在微软记事本中保存了两个内容相同的文件:一个以ansi格式保存,另一个以utf8格式保存。数据是马来西亚航空公司M370航班的死亡名单。
或者您可以按照以下方式创建文件:
1)将数据复制到微软记事本中。
乘客姓名,性别,出生日期
HuangTianhui,男,1948/05/28
姜翠云,女,1952/03/27
李红晶,女,1994/12/09
2) 使用记事本将文件保存为 test.ansi,并选择ANSI格式。
3) 使用记事本将文件保存为 test.utf8,并选择UTF-8格式。
read.table("test.ansi",sep=",",header=TRUE) #can work fine
read.table("test.utf8",sep=",",header=TRUE) #can't work
然后,我将编码设置为utf-8。
options(encoding="utf-8")
read.table("test.utf8",sep=",",header=TRUE,encoding="utf-8")
In read.table("test.utf8", sep = ",",header=TRUE,encoding = "utf-8") :
invalid input found on input connection 'test.utf8'
我该如何读取数据文件(test.utf8)?在Python中,这非常简单。
rfile=open("g:\\test.utf8","r",encoding="utf-8").read()
rfile
'\ufeff乘客姓名,性别,出生日期\n\nHuangTianhui,男,1948/05/28\n\n姜翠云,女,1952/03
/27\n\n李红晶,女,1994/12/09'
rfile.replace("\n\n","\n").replace("\ufeff","").splitlines()
['乘客姓名,性别,出生日期', 'HuangTianhui,男,1948/05/28', '姜翠云,女,1952/03/27',
'李红晶,女,1994/12/09']
Python在处理此类任务方面比R更好。
我按照Sathish的建议做了,问题有所解决,但仍然存在一些问题。
我发现当数据在data.frame中时,无法正确显示,
但是当数据是data.frame的一列时,可以正确显示,
奇怪的是,当数据是data.frame的一行时,也无法正确显示。
read.table("test.utf8", sep=",", header=TRUE, encoding="UTF-8")
- jbaums