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 回答