什么扩展ASCII编码是这个,我怎么能让ruby理解它?

时间:2013-10-01 22:54:28

标签: ruby-on-rails ruby encoding extended-ascii

字符0x910x920x930x94应该代表Unicode中的U+2018U+2019,{ {1}},U+201c,或“打开单引号”,“关闭单引号”,“打开双引号”和“关闭双引号”。我认为它是U+201d但是当我尝试使用ISO-8859-1处理文件时,它仍然无法识别这些字符。

如果不是IO.read('file', :encoding=>'ISO-8859-1')那么它是什么?如果是的话,红宝石为什么不认识这些角色?

更新:显然这个编码应该是Windows-1252。但是当我ISO-8859-1时,红宝石仍然无法识别这些字符。

更新2:没关系,IO.read('file', :encoding=>'Windows-1252')有效。

1 个答案:

答案 0 :(得分:3)

0x91是Unicode \u2018(AKA )的Windows-1251表示形式:

>> "\x91".force_encoding('windows-1251').encode('utf-8')
=> "‘"

Windows-1251和Latin-1(AKA ISO 8859-1)不一样,尝试使用windows-1251作为编码:

IO.read('file', :encoding => 'windows-1251')

这会给你一个知道它是Windows-1251的字符串。如果你想要UTF-8,那么也许你想要指定:internal_encoding and :external_encoding

IO.read('file', :external_encoding => 'windows-1251', :internal_encoding => 'utf-8')