【发布时间】:2011-11-16 04:02:54
【问题描述】:
我正在通过 RJDBC 从 MySQL 数据库读取文件,它正确显示了 R 中的所有字母(例如,נווה שאנן)。
但是,即使使用 write.csv 和 fileEncoding="UTF-8" 导出它,输出看起来也像
<U+0436>.<U+043A>. <U+041B><U+043E><U+0437><U+0435><U+043D><U+0435><U+0446>(在这种情况下,这不是上面的字符串,而是保加利亚语),用于保加利亚语、希伯来语、中文等。 ã、ç 等其他特殊字符也可以正常工作。
我怀疑这是因为 UTF-8 BOM 但我在网上没有找到解决方案
我的操作系统是德语 Windows7。
编辑:我试过了
con<-file("file.csv",encoding="UTF-8")
write.csv(x,con,row.names=FALSE)
和(afaik)等效的write.csv(x, file="file.csv",fileEncoding="UTF-8",row.names=FALSE)。
【问题讨论】:
-
你是说打开导出的文件时看到的是“U+0436”而不是“ж”?如果是这样,那不是 BOM 问题,只是 Unicode 代码点没有被编码为 UTF 编码,而是作为代码点输出的问题。也许向我们展示一些代码,您究竟是如何导出文件的?
-
我添加了有关如何导出文件的信息。是的,我看到的是“”而不是“ж”
-
在文件中看到“”是模棱两可的(甚至可能意味着这些字符实际上已内联在该文件中,或者您的编辑器无法显示它们)。您可以在文件中写下“ж”并告诉我们生成的文件包含的所有字符的十六进制值(在十六进制编辑器中打开);或者给我们代码来重现你的问题(当然我们没有你的数据库,所以用示例数据创建一个向量)。
标签: r utf-8 byte-order-mark export-to-csv