问题是标题说!谁能告诉我红宝石怎么做!
答案 0 :(得分:4)
ruby-iconv
已由encode方法从Ruby 1.9.3开始取代。有关详细信息,请参阅
Jörg W Mittag's answer,但简而言之:
utf8string = "èàòppè"
iso_string = utf8string.encode('ISO-8859-1')
我同意Williham Totlandt认为这种转换可能不是最聪明的想法,但无论如何:使用ruby-iconv:)
utf8string = "èàòppè"
iso_string = Iconv.conv 'iso8859-1', 'UTF-8', utf8string
答案 1 :(得分:4)
使用Ruby 1.9,这一点特别容易,因为所有字符串都带有编码:
# coding: UTF-8
u = 'µ'
如您所见,字符串编码为UTF-8:
p u.encoding # => #<Encoding:UTF-8>
p u.bytes.to_a # => [194, 181]
转码字符串非常简单:
i = u.encode('ISO-8859-1')
i
现在采用ISO-8859-1编码:
p i.encoding # => #<Encoding:ISO8859-1>
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