使用 R 转换文件编码? (ANSI 到 UTF-8)
Posted
技术标签:
【中文标题】使用 R 转换文件编码? (ANSI 到 UTF-8)【英文标题】:Convert a file encoding using R? (ANSI to UTF-8) 【发布时间】:2011-11-20 20:39:43 【问题描述】:我希望使用 R 将一个以 ANSI 编码的 html 文件转换为 UTF-8。
是否有工具或工具组合可以完成这项工作?
谢谢。
编辑:好的,我已将问题缩小到另一个问题。此处转载:Using "cat" to write non-English characters into a .html file (in R)
【问题讨论】:
【参考方案1】:你可以使用iconv:
writeLines(iconv(readLines("tmp.html"), from = "ANSI_X3.4-1986", to = "UTF8"), "tmp2.html")
tmp2.html 应该是 utf-8。
Henrik 于 2015 年 6 月编辑: 从 cmets 中提取的 Windows 工作解决方案如下:
writeLines(iconv(readLines("tmp.html"), from = "ANSI_X3.4-1986", to = "UTF8"),
file("tmp2.html", encoding="UTF-8"))
2021 年更新:如果 ANSI 是当前语言环境,则以下方法也有效(即,使用本地编码作为 from
源):
writeLines(iconv(readLines("tmp.html"), from = "", to = "UTF8"),
file("tmp2.html", encoding="UTF-8"))
【讨论】:
但是 html 标题呢?也不应该改吗? 感谢 Kohske,但这对我不起作用。它将转换文件中的文本,但以某种奇怪的方式,而不是文件本身。我用notepad++看编码的时候还是ANSI,只有通过notepad++才能改成UTF8(你的代码不会这样)。有什么建议? :) 换个from = "CP1252"
怎么样?
Kohske - 这确实是要使用的正确编码。但是当我将文件读入 R 时,它会正确解释文本。我会尝试更新我的问题以更好地解释...
您的测试 html 文件包含什么?来自?Encoding
:“ASCII 字符串永远不会用声明的编码进行标记,因为它们的表示在所有支持的编码中都是相同的。”也可以在对writeLines
的调用中尝试useBytes = TRUE
。【参考方案2】:
我对上面提出的解决方案有一些问题,尤其是 TAB 字符。这种选择从未让我失望。不幸的是,它只适用于类 UNIX 系统。
system('iconv -f CP1252 -t UTF-8 < tmp.html > tmp2.html')
【讨论】:
以上是关于使用 R 转换文件编码? (ANSI 到 UTF-8)的主要内容,如果未能解决你的问题,请参考以下文章
Unity拓展工具批量更改脚本文件的编码格式 (unity中脚本文件的编码格式从ANSI转换到UTF8出现乱码)
请问用批处理命令如何将ANSI编码的txt文件批量转换utf8编码的?就右键另存为那种,但是量太大。