gpt4 book ai didi

使用 UTF-16 编码的 R write.csv

转载 作者:行者123 更新时间:2023-12-04 01:03:13 25 4
gpt4 key购买 nike

我在使用 write.csv 输出 data.frame 时遇到问题使用 UTF-16 字符编码。

背景:我正在尝试从 data.frame 中写出一个 CSV 文件以在 Excel 中使用。 Excel Mac 2011 似乎不喜欢 UTF-8(如果我在文本导入期间指定 UTF-8,非 ASCII 字符显示为下划线)。我一直相信 Excel 会对 UTF-16LE 编码感到满意。

这是示例 data.frame:

> foo
a b
1 á 羽
> Encoding(levels(foo$a))
[1] "UTF-8"
> Encoding(levels(foo$b))
[1] "UTF-8"

所以我尝试通过执行以下操作来输出 data.frame:
f <- file("foo.csv", encoding="UTF-16LE")
write.csv(foo, f)

这给了我一个 ASCII 文件,如下所示:
"","

如果我使用 encoding="UTF-16" , 我得到一个只包含字节顺序标记的文件 0xFE 0xFF .

如果我使用 encoding="UTF-16BE" ,我得到一个空文件。

这是在 Mac OS X 10.6.6 上的 R 2.12.2 的 64 位版本上。我做错了什么?

最佳答案

您可以简单地将 csv 保存为 UTF-8,然后使用 iconv 将其转换为 UTF-16LE在终端。

如果您坚持在 R 中执行此操作,以下内容可能会奏效 - 尽管似乎 iconv在 R 中确实有一些问题,请参阅:http://tolstoy.newcastle.edu.au/R/e10/devel/10/06/0648.html

> x <- c("foo", "bar")
> iconv(x,"UTF-8","UTF-16LE")
Error in iconv(x, "UTF-8", "UTF-16LE") :
embedded nul in string: 'f\0o\0o\0'

正如你所看到的,确实需要上面链接的补丁——我没有测试过,但如果你想简单地(和讨厌的)保留它:只需使用 system 在 R 中调用第三方 iconv 程序即可。将表保存到 csv 后调用。

关于使用 UTF-16 编码的 R write.csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267099/

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