理解字串中的資料

在 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