在 csv 中使用 R 存储特殊字符

Storing special characters with R in csv

提问人:Aaron Philipp 提问时间:1/10/2023 最后编辑:Aaron Philipp 更新时间:8/14/2023 访问量:401

问:

我需要一个解决方案来存储特殊字符,如表情符号、阿拉伯语或中文字符。我尝试了 base ,带有参数和 readr-function,但没有任何工作正常。特殊字符显示在 R 中,所以我想有一个存储它们的解决方案。write.csvwrite.csv2fileEncoding="UTF-8"write_csv

示例代码:

df <- data.frame("x" = c("ö", "ä"),
                 "y" = c("مضر السامرائي", "🐇"))

write.csv(df, "~/TubeWork/data/test2.csv", fileEncoding = "UTF-8")

为了检查结果,我使用 Excel,它如下所示:

enter image description here

也许是Excel的问题,可以正确显示结果吗?如果是,我应该如何检查字符是否正确显示?

是否有将字符转换为 unicode 并将其保存为 unicode 的解决方案?这对我来说也很好。但最好的解决方案是显示特殊字符的 csv。

先谢谢你!

Windows 10 64 位;建议 4.2.1;RStudio 2022.12.0+353

r csv unicode 编码 UTF-8

评论

0赞 MrFlick 1/10/2023
你如何看待输出?这是什么屏幕截图?这看起来不像 RStudio 表查看器。看起来您的查看器程序不理解 unicode。文件本身可能没问题。
0赞 MyICQ 1/10/2023
我很确定输出可能是正确的。当您说“输出如下所示”时,您不应该使用以您不知道的方式对数据进行编码的应用程序来查看数据。查看文件中的原始字节,并与 UTF8 字符的定义方式进行比较。Xah Code 只是一个例子。在你的情况下,将是和兔子.如果您查看使用 Windows 代码页,它可能看起来与您演示的完全相同,两个无意义的字节。äC3 84F0 9F 90 87ä
0赞 MyICQ 1/10/2023
刚刚在 Python 中进行了测试。在 UTF8 中,编码将显示为 Windows-1252。简而言之,数据只是你对它的贡献。如果不将字节定义为 UTF-8 文本,则它变得毫无意义。ä, öä,ö
0赞 Aaron Philipp 1/12/2023
我使用 Excel 检查输出。
2赞 Ritchie Sacramento 1/12/2023
如果要在 Excel 中打开此数据,请使用 include 必要的 BOM,告知 Excel csv 文件是 UTF-8 编码的。readr::write_excel_csv()

答:

1赞 Aaron Philipp 1/13/2023 #1

更新!

如果我在 R 中读取导出的 csv,所有表情符号都会正确显示。因此,正如你们所写的,Excel 无法正确播放表情符号和特殊字符。如果我想在Excel中显示特殊字符,您应该使用(非常感谢Ritchie Scramenta的有用评论)。readr:write_excel_csv()

再一次:问题解决了!

谢谢!