Ruby中的csv文件编码问题

用户名

我使用ruby解析csv文件并收到错误

invalid byte sequence in utf-8 csv

我尝试了编码选项

    CSV.foreach(path, {headers: true, encoding: 'windows-1251:utf-8'}) do |row|
        new_row = {}
        headers = []
        row.each do |k,v|
            headers << k
            v = v.force_encoding('UTF-8') || ''
            v.gsub! "\xE2\x80\x96", "-"
            v.gsub! "\xE2\x80\x93", "-"
            v.gsub! "\xE2\x80\x94", "-"
            v.gsub! "\xE2\x80\x95", "-"
            v.gsub! "\xE2\x80\x98", "'"
            v.gsub! "\xE2\x80\x99", "'"
            v.gsub! "\xE2\x80\x9C", "\""
            v.gsub! "\xE2\x80\x9D", "\""
            v.gsub! "\xE2\x80\xA6", "..."
            v.gsub! "\x0D\x0A", "\n"
            v.gsub! "\xC2\xA0", " "
            v.gsub! "\xC2\xB0", " "

            new_row[k] = v
        end

        output_csv.puts headers if output_csv.header_row?
        output_csv.puts new_row
    end

现在我结束了

incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)

在CSV文件中引起此问题的字符串是“ G.ran”

下面是示例输入行

David Evans & Assocs    www.deainc.com  13858534    [email protected]  G�ran   Volk    5034990383

谁能建议我如何解决这个问题。

阿列克谢·马蒂什金(Alexei Matiushkin)

该问题很可能是由于以错误的编码保存文件引起的假设您的文件中有Unicode符号“★”。将其另存为ASCIILatin1其他每符号1个字节的编码,则会丢失一些数据

符号“ ...”被称为替换字符它用来表示“这里是在编码转换过程中显然丢失的unicode。”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章