我如何将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中,这些对象使用类似于字符串的编码进行标记,并且代码转换会自动发生。 只需说print
或puts
,Ruby就会为你做转码:
File.open('test.txt', 'w', encoding: 'ISO-8859-1') do |f| f.puts u end