虽然R在内部处理Unicode字符表现良好,但我无法在R中导出带有UTF-8 Unicode字符的数据框。是否有强制执行此操作的方法?
data.frame(c("hīersumian","ǣmettigan"))->test
write.table(test,"test.txt",row.names=F,col.names=F,quote=F,fileEncoding="UTF-8")
输出的文本文件内容为:
hiersumian <U+01E3>mettigan
我在Windows 7环境下使用R版本3.0.2。
编辑
答案中有人建议R以UTF-8格式正确地写入了该文件,问题可能出现在我用来查看文件的软件上。这里提供一些我在R中编写的代码。我正在读入一个以UTF-8编码的文本文件,R可以正确地读取它。然后R以UTF-8格式将文件写出并重新读入,此时正确的Unicode字符就消失了。
read.table("myinputfile.txt",encoding="UTF-8")->myinputfile
myinputfile[1,1]
write.table(myinputfile,"myoutputfile.txt",row.names=F,col.names=F,quote=F,fileEncoding="UTF-8")
read.table("myoutputfile.txt",encoding="UTF-8")->myoutputfile
myoutputfile[1,1]
控制台输出:
> read.table("myinputfile.txt",encoding="UTF-8")->myinputfile
> myinputfile[1,1]
[1] hīersumian
Levels: hīersumian ǣmettigan
> write.table(myinputfile,"myoutputfile.txt",row.names=F,col.names=F,quote=F,fileEncoding="UTF-8")
> read.table("myoutputfile.txt",encoding="UTF-8")->myoutputfile
> myoutputfile[1,1]
[1] <U+FEFF>hiersumian
Levels: <U+01E3>mettigan <U+FEFF>hiersumian
>
file test.txt
会显示test.txt: UTF-8 Unicode text
。十六进制转储显示出了正确的字节。问题写得很好。 - Konrad Rudolph