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。
- 我以前阅读过ruby-doc.org,这里和这里还有关于Perl pack/unpack的另外两个很好的教程。我稍后再研究。我没有在任何地方找到编码信息,但是现在我明白了。谢谢!
-
@SonySantos有关编码和字符集的入门知识:blog.grayproductions.net/articles/…。完成该操作后,目录链接将包含更多文章。
-
"有些指令对我来说仍然没有意义,所以不要灰心。",这是真的!