gpt4 book ai didi

r - 在 R 中将 UTF-8 BOM 导出为 .csv

转载 作者:行者123 更新时间:2023-12-02 15:28:00 27 4
gpt4 key购买 nike

我正在通过 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)

以及(据我所知)等效的 write.csv(x, file="file.csv",fileEncoding="UTF-8",row.names=FALSE) .

最佳答案

接受的答案对我在类似的应用程序中没有帮助(Windows 中的 R 3.1,当我尝试在 Excel 中打开文件时)。无论如何,基于文件文档的这一部分:

If a BOM is required (it is not recommended) when writing it should be written explicitly, e.g. by writeChar("\ufeff", con, eos = NULL) or writeBin(as.raw(c(0xef, 0xbb, 0xbf)), binary_con)

我想出了以下解决方法:

write.csv.utf8.BOM <- function(df, filename)
{
con <- file(filename, "w")
tryCatch({
for (i in 1:ncol(df))
df[,i] = iconv(df[,i], to = "UTF-8")
writeChar(iconv("\ufeff", to = "UTF-8"), con, eos = NULL)
write.csv(df, file = con)
},finally = {close(con)})
}

请注意,df 是 data.frame,filename 是 csv 文件的路径。

关于r - 在 R 中将 UTF-8 BOM 导出为 .csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7402307/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com