为什么我的代码没有正确读取十六进制?

ibl*_*lue 0 ruby irb

当我在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
Run Code Online (Sandbox Code Playgroud)

我明白了:

"\x00ll ur systems belong 2 us"
=> nil
Run Code Online (Sandbox Code Playgroud)

不过"61".to_i(16).chr"a",不"\x00".

那里发生了什么?

Dig*_*oss 6

问题是你有一个不可见的Unicode 从左到右的标记,位于%w(.之后.当我通过Stack Overflow看到它时,它显示为以UTF-8编码,但它看起来像原始源中的(Windows?)UTF-16.