UTF-8 是 Ruby v.2 中的默认编码吗?
Is UTF-8 the default encoding in Ruby v.2?
Matz 在他的书中写道,为了使用 UTF-8,您必须在脚本的第一行添加编码注释。他举了个例子:
# -*- coding: utf-8 -*- # Specify Unicode UTF-8 characters
# This is a string literal containing a multibyte multiplication character
s = "2x2=4"
# The string contains 6 bytes which encode 5 characters
s.length # => 5: Characters: '2' 'x' '2' '=' '4'
s.bytesize # => 6: Bytes (hex): 32 c3 97 32 3d 34
当他调用bytesize
时,它returns 6
因为乘法符号×
在ascii集之外,必须用两个字节的unicode表示.
我试过这个练习,没有指定编码注释,它将乘法符号识别为两个字节:
'×'.encoding
=> #<Encoding:UTF-8>
'×'.bytes.to_a.map {|dec| dec.to_s(16) }
=> ["c3", "97"]
看来 utf-8 是默认编码。这是最近对 Ruby 2 的补充吗?他的例子来自Ruby 1.9.
是的。 UTF-8 是默认编码这一事实仅自 Ruby 2.
如果您知道他的示例来自 Ruby 1.9,请检查新添加的功能到 Ruby 的较新版本。没那么多。
Matz 在他的书中写道,为了使用 UTF-8,您必须在脚本的第一行添加编码注释。他举了个例子:
# -*- coding: utf-8 -*- # Specify Unicode UTF-8 characters
# This is a string literal containing a multibyte multiplication character
s = "2x2=4"
# The string contains 6 bytes which encode 5 characters
s.length # => 5: Characters: '2' 'x' '2' '=' '4'
s.bytesize # => 6: Bytes (hex): 32 c3 97 32 3d 34
当他调用bytesize
时,它returns 6
因为乘法符号×
在ascii集之外,必须用两个字节的unicode表示.
我试过这个练习,没有指定编码注释,它将乘法符号识别为两个字节:
'×'.encoding
=> #<Encoding:UTF-8>
'×'.bytes.to_a.map {|dec| dec.to_s(16) }
=> ["c3", "97"]
看来 utf-8 是默认编码。这是最近对 Ruby 2 的补充吗?他的例子来自Ruby 1.9.
是的。 UTF-8 是默认编码这一事实仅自 Ruby 2.
如果您知道他的示例来自 Ruby 1.9,请检查新添加的功能到 Ruby 的较新版本。没那么多。