Ruby中的字符串编码问题

Ruby中的字符串编码问题,ruby,encoding,binary,mbcs,Ruby,Encoding,Binary,Mbcs,在ruby 1.9.3-p484中,我必须构造一个SMPP包,但是当我将构造包的内容以字符串形式传递给传递它的方法时,内容中会出现一个奇怪的\xC2值。调查了这个问题后,我发现以下有趣的问题: "\u008E".force_encoding("BINARY") => "\xC2\x8E" "\u008E".force_encoding("BINARY") # => "\xC2\x8E" 当我想使用二进制编码时,为什么\u00BE变成\xC2\8E?为什么不\x00\x8E?这是

在ruby 1.9.3-p484中,我必须构造一个SMPP包,但是当我将构造包的内容以字符串形式传递给传递它的方法时,内容中会出现一个奇怪的
\xC2
值。调查了这个问题后,我发现以下有趣的问题:

"\u008E".force_encoding("BINARY")
 => "\xC2\x8E"
"\u008E".force_encoding("BINARY")
# => "\xC2\x8E"

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

这是一种二进制表示。 看一看:

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

我注意到字符串#inspect results\x{XXXX}的编码不是 Unicode

是否有可能接受\x{XXXX}作为转义 字符串序列

irb(主):004:0>a=“\xC7\xD1\xB1\xDB”

这是二进制表示

irb(主要):010:0>a =>“\x{B1DB}”


它在一个表示上。

因为它只是强制文本进行编码,而您已经看到它存储在内存中。它作为(多字节字符集)数据存储在内存中。对于
\x7F
上的字符,它将变成两个字节的表示形式。所以你可以看到: