我如何将utf8字符转换为iso8859-1

问题是标题说! 谁能告诉我ruby怎么做!

〜更新〜

ruby-iconv已经被编码方法从Ruby 1.9.3开始取代。 有关详细信息,请参阅JörgWMittag的答案 ,但简而言之:

 utf8string = "èàòppè" iso_string = utf8string.encode('ISO-8859-1') 

我同意Williham Totlandt认为这种类型的转换可能不是最聪明的想法,但无论如何:使用ruby-iconv 🙂

 utf8string = "èàòppè" iso_string = Iconv.conv 'iso8859-1', 'UTF-8', utf8string 

使用Ruby 1.9,这非常简单,因为所有字符串都带有它们的编码:

 # coding: UTF-8 u = 'µ' 

如您所见,字符串编码为UTF-8:

 p u.encoding # => # p u.bytes.to_a # => [194, 181] 

转码字符串非常简单:

 i = u.encode('ISO-8859-1') 

i现在使用ISO-8859-1编码:

 p i.encoding # => # p i.bytes.to_a # => [181] 

如果要写入文件,网络,IO流或控制台,它会变得更加容易。 在Ruby 1.9中,这些对象使用类似于字符串的编码进行标记,并且代码转换会自动发生。 只需说printputs ,Ruby就会为你做转码:

 File.open('test.txt', 'w', encoding: 'ISO-8859-1') do |f| f.puts u end