当我在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"
。
那里发生了什么?
答案 0 :(得分:6)
问题是您在%w(
之后有一个不可见的Unicode left-to-right mark,。当我通过Stack Overflow看到它时,它显示为以UTF-8编码,但它看起来像是原始源中的(Windows?)UTF-16。