0

IRBで次のコードを実行すると:

1.9.3p194 :001 > x = %w(‎61 6C 6C 20 75 72 20 73 79 73 74 65 6D 73 20 62 65 6C 6F 6E 67 20 32 20 75 73)
1.9.3p194 :002 > puts x.map {|z| z.to_i(16)}.map(&:chr).join.inspect

私は得る:

"\x00ll ur systems belong 2 us"
=> nil

ただし、で"61".to_i(16).chr"a"ありません"\x00"

そこで何が起こっているのですか?

4

1 に答える 1

6

問題は、の直後に見えないUnicodeの左から右へのマークがあること%w(です。Stack Overflowで見るまでに、UTF-8でエンコードされて表示されますが、元のソースでは(Windows?)UTF-16であったに違いないようです。

于 2012-08-15T22:45:44.777 に答える