ruby字符串函数之间的区别是: - 代码点和字节
'abcd'.bytes
=> [97, 98, 99, 100]
'abcd'.codepoints
=> [97, 98, 99, 100]
答案 0 :(得分:10)
bytes
返回单个字节,无论字符大小如何,而codepoints
返回unicode代码点。
s = '日本語'
s.bytes # => [230, 151, 165, 230, 156, 172, 232, 170, 158]
s.codepoints # => [26085, 26412, 35486]
s.chars # => ["日", "本", "語"]
我看到你的困惑出现在哪里。 Ruby现在默认使用utf-8编码,utf-8是专门设计的,因此它的第一个代码点(0-127)完全与ASCII编码相同。 ASCII是一种具有单字节字符的编码,因此在您的问题示例中,方法bytes
和codepoints
会返回相同的值,同时。
因此,如果您需要将字符串分解为字符,请使用chars
或codepoints
(适用于您的用例)。仅当将字符串视为不透明的二进制blob而不是文本时,才使用bytes
。