【问题标题】:Convert a file encoding using R? (ANSI to UTF-8)使用 R 转换文件编码? (ANSI 到 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)

【问题讨论】:

    标签: r encoding utf-8 ansi


    【解决方案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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 2011-11-07
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      相关资源
      最近更新 更多