Ruby中的字符串编码问题

3
在ruby 1.9.3-p484中,我需要构建一个SMPP包,但当我将构建的包的内容以字符串形式传递给发送它的方法时,内容中出现了奇怪的\xC2值。经过调查,我发现了以下有趣的注意事项:
"\u008E".force_encoding("BINARY")
 => "\xC2\x8E"

当我使用二进制编码时,为什么\u00BE变成了\xC2\8E而不是\x00\x8E


(涉及IT技术)
2个回答

1
因为它只是以编码的形式强制进行文本处理,而且您已经看到它存储在内存中的样子。它以的数据形式存储在内存中。对于大于 \x7F 的字符,它会变成至少两个字节的表示形式。所以您可以看到:
"\u008E".force_encoding("BINARY")
# => "\xC2\x8E"

1

这是二进制表示法。看一下:

在2010年7月27日22:21:31 +0900,Heesob Park写道:

我注意到String#inspect的结果对于非Unicode编码为\x{XXXX}。

\x{XXXX}有没有可能被接受为字符串的转义序列?

irb(main):004:0> a = "\xC7\xD1\xB1\xDB"

这是二进制表示法。

irb(main):010:0> a1 => "\x{B1DB}"

https://bugs.ruby-lang.org/issues/3619

它是基于codepoint的表示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接