使用Ruby批量转换为UTF8

时间:2011-05-19 16:33:12

标签: ruby encoding utf-8

我的文件编码遇到了一些问题。 可悲的是,到目前为止,我仍然没有对编码问题的所有内容保持良好的条件;虽然自从我开始使用Ruby 1.9以来我学到了很多东西。

我的问题:我有几个要处理的文件,预计是UTF-8格式。但我不知道如何正确批量转换这些文件;例如在Ruby中,我打开文件,将字符串编码为utf8并将其保存在另一个地方。 不幸的是,它不是如何完成的 - 文件仍然是ANSI。 至少那是我的Notepad ++所说的。 我发现它很奇怪,因为字符串清楚地编码为UTF-8,我甚至将 File.open 参数:encoding设置为'UTF-8'。我的shell设置为CP65001,我相信它也对应于UTF-8。

有什么建议吗? 非常感谢!

/ e:更重要的是,在Notepad ++中,我可以手动转换:

  • 选择所有内容,
  • 拷贝,
  • 将编码设置为UTF-8(此处可以看到\ x-escape-sequences)
  • 从剪贴板粘贴所有内容

完成!逃脱字符消失,文件可以处理。

1 个答案:

答案 0 :(得分:1)

  

不幸的是,这不是怎么做的 - 文件仍然是ANSI。至少那是我的Notepad ++所说的。

UTF-8被设计为ASCII的超集,这意味着大多数可打印的ASCII字符在UTF-8中是相同的。因此,除非您有“特殊”字符,否则无法区分ASCII和UTF-8。这些特殊字符使用UTF-8中的多个字节表示。

您的转换实际上很可能正常运行,但您可以通过尝试使用特殊字符来仔细检查。

此外,编码之间转换的最佳实用工具之一是iconv,也是has ruby bindings