我正在将CSV文件导入Ruby(1.8.7)。 File.open('path / to / file.csv')。read在控制台中返回:
Stefan,Engstr\232m
UniversalDetector(chardet gem)将编码识别为iso-8859-2。
UniversalDetector::chardet("Stefan,Engstr\232m")
=> {"confidence"=>0.626936305574385, "encoding"=>"ISO-8859-2"}
尝试转换字符串会产生以下结果:
Iconv.conv("UTF-8", "ISO-8859-2", "Stefan,Engstr\232m")
=> "Stefan,Engstrm"
虽然我希望:
=> "Stefan,Engström"
如果我应该提供更多信息或详细说明某事,请告诉我。
答案 0 :(得分:5)
编码可能是"Macintosh Roman",其他几个选项可能是"Mac Central European"和"Mac Icelandic"。 \nnn
表示法使用八进制,因此\232
的小数为154,而字符154是小写的O-umlaut(“ö”),你在所有这三种编码中都是期望的;我在任何Windows代码页或ISO 8859字符集中都没有看到154。我猜Mac Roman比冰岛或中欧编码更常见。
尝试使用'MacRoman'
作为Iconv的源编码:
>> Iconv.conv("UTF-8", "MacRoman", "Stefan,Engstr\232m")
=> "Stefan,Engström"