UTF-8是Ruby v.2中的默认编码吗?

Don*_*ato 5 ruby encoding

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 
Run Code Online (Sandbox Code Playgroud)

当他调用时bytesize,它返回,6因为乘法符号×在ascii集之外,并且必须由具有两个字节的unicode表示.

我尝试了练习而没有指定编码注释,它将乘法符号识别为两个字节:

'×'.encoding
 => #<Encoding:UTF-8> 
'×'.bytes.to_a.map {|dec| dec.to_s(16) }
 => ["c3", "97"] 
Run Code Online (Sandbox Code Playgroud)

所以看起来utf-8是默认编码.这是Ruby 2的最新成员吗?他的例子来自Ruby 1.9.

saw*_*awa 2

是的。从 Ruby 2 开始,UTF-8 才成为默认编码。

如果您知道他的示例来自 Ruby 1.9,请检查新版本 Ruby 中新添加的功能。没那么多。