我正在编写一个使用Hpricot的爬虫。它从某个网页下载字符串列表,然后我尝试将其写入文件。但是编码出现了问题:
"\xC3" from ASCII-8BIT to UTF-8
我有一些物品,它们在网页上被呈现并以这种方式打印:
Développement
str.encoding
返回UTF-8
,因此force_encoding('UTF-8')
无法帮助。我该如何将其转换为可读的UTF-8?
我正在编写一个使用Hpricot的爬虫。它从某个网页下载字符串列表,然后我尝试将其写入文件。但是编码出现了问题:
"\xC3" from ASCII-8BIT to UTF-8
我有一些物品,它们在网页上被呈现并以这种方式打印:
Développement
str.encoding
返回UTF-8
,因此force_encoding('UTF-8')
无法帮助。我该如何将其转换为可读的UTF-8?
你的字符串似乎被以错误的方式进行了编码:
"Développement".encode("iso-8859-1").force_encoding("utf-8")
#=> "Développement"
U+201C 从 UTF-8 转换为 CIDEM / ACC1Ó 中的 ISO-8859-1
,U+20AC 从 UTF-8 转换为 Citi’s Sustainable Development Investments 中的 ISO-8859-1
,同时一些名称被转换但是不正确,并且在尝试将其放入数据库时会出现“不完整的多字节字符”错误消息。 - ciemborEncoding::UTF_8
代替为了"utf-8"
字符串字面量(或任何其他编码字符串)而使用更多内存的选项。 - Todd看起来您的字符串认为它是UTF-8,但实际上它是其他编码方式,可能是ISO-8859-1。
首先要定义(强制)正确的编码方式,然后将其转换为UTF-8。
以您的示例为例:
puts "Développement".encode('iso-8859-1').encode('utf-8')
另一种选择是:
puts "\xC3".force_encoding('iso-8859-1').encode('utf-8') #-> Ã
如果Ã
没有意义,那么尝试另一种编码方式。
file_contents.encode!('UTF-16', 'UTF-8')