关于ruby:转换为utf8或从utf8转换时如何打包和解压缩猜测字符编码?

How do pack and unpack guesses the character encoding when converting to and from utf8?

假设我想将"\\xBD"转换为UTF-8。

如果我使用pack


这实际上与ISO-8859-x中\\xBD的表示方式无关。关键部分是将pack转换为UTF-8。

pack接收[189]。代码点189在UTF-8(更准确地说是Unicode)中定义为??。不要以为这是Unicode规范作者,而不是"更喜欢" ISO-8859-1而不是ISO-8859-9。他们必须选择表示??的代码点,而他们只选择了189。

由于您尝试了解有关pack / unpack的更多信息,因此让我解释更多:

当您使用C指令unpack时,ruby将字符串解释为ascii-8bit,并提取ascii代码。在这种情况下,\\xBD转换为0xBD又称189。这是一个非常基本的转换。

使用U指令pack时,ruby将在其UTF-8转换表中查找以查看哪些代码点映射到数组中的每个整数。

pack / unpack具有非常特定的行为,具体取决于您提供的指令。我建议阅读ruby-doc.org。有些指令对我来说仍然没有意义,因此请不要气our。