我正在阅读“Ruby 编程语言”。在第 3.2.6.1 节“Ruby 1.9 中的多字节字符”中,本书介绍了 Ruby 字符串中的优化
如果字符串文字仅包含 7 位 ASCII 字符,则其编码方法将返回 ASCII,即使源编码为 UTF-8
我在 ruby 1.9.1-p431、1.9.2 和 1.9.3-p125 上都尝试了以下简单脚本,它们都对 7 位 ASCII 字符使用 UTF-8 编码。
# coding: utf-8
s = 'hello'
p s.encoding
# result is #<Encoding:UTF-8>
我想也许这种行为在 Ruby 1.9 的开发过程中发生了变化。我尝试搜索 Ruby 1.9 的变更日志,1.9.1 的变更日志证实了这种行为。我还克隆了 Ruby 的 git 存储库,但我找不到提到更改此行为的提交。
更新:
查看 Ruby 的源代码存储库,我猜这是 2008 年 1 月发布的 Ruby 1.9.0 中的行为。(它无法在 Debian 6 上编译,所以我无法完全确认。)虽然“The Ruby Programming 《语言》是一本优秀的书,最初出版于2008年。很可能书中的一些描述已经过时了。
另一个过时的描述是关于Encoding.list
方法行为的。因此,如果您也在阅读这本书,请注意过时的描述。