理解字符串中的数据
在 Ruby 中,字符串只是一个字节序列以及编码名称(例如 UTF-8
,US-ASCII
,ASCII-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