如何在Ruby中将string转换为UTF8

我在写一个使用Hpricot的爬虫。 它从某个网页下载string列表,然后尝试将其写入文件。 编码有问题:

"\xC3" from ASCII-8BIT to UTF-8 

我有在网页上呈现并以这种方式打印的项目:

 Développement 

str.encoding返回UTF-8 ,所以force_encoding('UTF-8')不起作用。 我怎样才能将其转换为可读的UTF-8?

你的string似乎已经被错误地编码了:

 "Développement".encode("iso-8859-1").force_encoding("utf-8") #=> "Développement" 

似乎你的string认为它是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') #-> Ã 

如果Ã没有意义,则尝试另一种编码。

“ ruby 1.9:UTF-8中的无效字节序列 ”描述了使用较less代码的另一种好方法:

 file_contents.encode!('UTF-16', 'UTF-8')