gpt4 book ai didi

ruby - 将 Ruby 的 fastercsv 与字符编码结合使用

转载 作者:数据小太阳 更新时间:2023-10-29 08:13:47 25 4
gpt4 key购买 nike

使用 Ruby 1.8.7,我想在我的系统中接受 csv,即使这是一个管理应用程序,我似乎可以获得几种不同类型的 csvs。在我的 Mac 上,如果我使用“windows csv”选项从 excel 导出,那么默认情况下 fastercsv 可以读取它。在 Windows 上,我似乎得到了 utf-16 编码的 csvs(我还没有弄清楚如何解析)

允许用户上传可能为 utf8、utf16、ascii 等类型格式的 csv,检测和解析它们似乎是一件很常见的事情。有人解决了吗?

我开始查看 UniversalDetector 来帮助我进行检测,然后使用 Iconv 进行转换,但这似乎很棘手,希望有人能解决 :)

最佳答案

根据 FasterCSV's docs , initialize 方法接受一个 :encoding 选项:

The encoding to use when parsing the file. Defaults to your $KDOCE setting. Valid values: n??? orN??? for none, e??? orE??? for EUC, s??? orS??? for SJIS, and u??? orU??? for UTF-8 (see Regexp.new()).

由于其列表有限,您可能需要考虑使用 iconv对内容进行预处理,然后将它们传递给 CSV。您可以使用 Ruby 的 iconv(“Iconv”)接口(interface)或它的命令行版本。 Iconv 非常强大和灵活,能够转换 UTF-16 等。

实际上检测文档的编码问题更多,但命令行版本可以帮助你。如果我没记错的话,它可以帮助识别编码。它还可以在编码之间进行转换,或者,如果需要,可以告诉它转换为 ASCII,转换为最接近的匹配字符,或者完全忽略它们。

在处理不同字符集方面,Ruby 1.9.2 比 1.8.7 强大得多,因此您可能需要考虑升级。此外,要更加熟悉处理字符集和多字节字符的工具和问题,您应该阅读 James Gray's blogs .

关于ruby - 将 Ruby 的 fastercsv 与字符编码结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5157584/

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