理解字串中的資料
在 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