理解字符串中的数据

在 Ruby 中,字符串只是一个字节序列以及编码名称(例如 UTF-8US-ASCIIASCII-8BIT),它指定如何将这些字节解释为字符。

Ruby 字符串可用于保存文本(基本上是一系列字符),在这种情况下通常使用 UTF-8 编码。

"abc".bytes  # => [97, 98, 99]
"abc".encoding.name  # => "UTF-8"

Ruby 字符串也可用于保存二进制数据(字节序列),在这种情况下通常使用 ASCII-8BIT 编码。

[42].pack("i").encoding  # => "ASCII-8BIT"

字符串中的字节序列可能与编码不匹配,如果你尝试使用该字符串,则会导致错误。

"\xFF \xFF".valid_encoding? # => false
"\xFF \xFF".split(' ')      # ArgumentError: invalid byte sequence in UTF-8