1
任何人都可以解释这段代码是怎么回事?相同的字符串,不同的编码,但不等于Ruby
s1 = "\x20".force_encoding 'UTF-8'
s2 = "\x20".force_encoding 'ASCII-8BIT'
puts "s1 == s2: #{s1 == s2}"
s3 = "\xAB".force_encoding 'UTF-8'
s4 = "\xAB".force_encoding 'ASCII-8BIT'
puts "s3 == s4: #{s3 == s4}"
在Ruby 2.0.0p353它打印:
s1 == s2: true
s3 == s4: false
我不明白为什么S3和S4不相等时,S1和S2是。 0xAB是'½'的ASCII码,据我所知可以用ASCII-8BIT和UTF8表示。
'\ 0xAB'也*不是*'½'作为UTF-8字符码。我发现这个:'“\ xAB”.force_encoding('CP850')。encode('UTF-8')' - 给出'½'。 。 。 http://en.wikipedia.org/wiki/Code_page_850 - 也许其他一些基于MSDOS的扩展也有这种映射。 –
我不知道你在哪里得到了关于这是1/2码ASCII码的信息。它实际上是[左指双引号,左指guillemet](http://www.ascii-code.com/)。你的意思是'\ xBD'? – roippi
谢谢@NeilSlater,这很有道理! – johnrl