我使用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
谁能建议我如何解决这个问题。
该问题很可能是由于以错误的编码保存文件引起的。假设您的文件中有Unicode符号“★”。将其另存为ASCII
或Latin1
其他每符号1个字节的编码,则会丢失一些数据。
符号“ ...”被称为替换字符。它用来表示“这里是在编码转换过程中显然丢失的unicode。”
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句