使用 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编码的?就右键另存为那种,但是量太大。

批量将ANSI文本txt文件转换成UTF8编码格式 (vbs方法)

springboot数据库将ansi编码转为utf8

怎么才能把utf-8编码的asp文件转换成gn2312

vb中怎么把ansi转换成UTF-8