我正在尝试解析Rails中的CSV文件,除了Windows和Mac的Excel中保存的任何内容(使用版本16.26进行测试(之外,效果很好(保存在Numbers和Google表格中的CSV工作正常(。任何带有重音符的字符都会产生"Encoding::UndefinedConversionError: "xEF" from ASCII-8BIT to UTF-8".
Excel声称它以UTF-8保存。
我希望重音字符在上传保存在 Excel 中的 CSV 时不会引发错误。
我尝试过的事情:
-
将读取编码设置为 BOM|UTF-8(根据 BOM 链接(、UTF-8、ISO-8859-1、UTF-16、Windows-1252、ASCII-8 位(并在数组中循环遍历其中的每一个,以防万一其中一个失败,然后将其从数组中删除(
-
当前代码使用 ISO8859-1:UTF-8,它应该以 ISO8859-1 读取,然后以 UTF-8 编码
-
创建一个临时文件,根据此线程中的第一个答案将其转换为binmode,CSV.parse(temp.path,编码:"bom|utf-8"(。
data = CSV.parse(csv, headers: true, header_converters: :symbol, skip_blanks: true, encoding: 'ISO8859-1:UTF-8')
如果我将保存在 Excel 中的 csv,然后将其保存在谷歌表格或数字中,然后上传,它也有效。不幸的是,Excel是我们用户上传的最常见的CSV。
使用 csvreader gem 解决。内置的CSV解析器吸进了轨道。