Ruby 使用中文的注意事项

2017-10-17  本文已影响23人  changsanjiang

在某些 Ruby 运行环境中, 执行包含中文的脚本时, 有可能出现以下错误.

执行示例

> ruby kiritsubo.rb
kiritsubo.rb:1: invalid multibyte char (UTF-8)
kiritsubo.rb:1: invalid multibyte char (UTF-8)

这是编写程序时没有指定程序的编码方式造成的. Ruby 程序的编码方式, 是通过在程序的首行代码添加注释 "#encoding:编码方式" 来指定(编码的规则称为 encoding). 我们称这个注释为 魔法注释( magic comment ).
例如, 使用简体中文版 Windows 常用编码 GBK 编写代码时, 可像下面这样写魔法注释.

# encoding: GBK
print " 话说某个朝代, 后宫宾妃甚多,\n "
print " 其中有一宫女, 出生并不十分高贵, 却蒙圣恩宠爱.\n "

这样指定程序的编码方式后, Ruby 在执行程序时就可以正确识别程序中的中文了. 下表是各平台常用的编码方式. 平台有多个常用编码方式时, 请按照实际情况选择适合的编码方式.

平台 编码方式
Windows GBK( 或者 GB 2312 )
Mac OS X UTF-8
Unix UTF-8

另外, 若没指定魔法注释, Ruby 会默认使用 UTF-8 编码方式. 因此, 在 Ruby 2.0 中, 如果使用 UTF-8 编码方式, 可以省略魔法注释.
除此之外, 使用 p 方法输出中文时, 有时也会出现乱码的情况. 这时, 可以使用 "-E编码方式"这个选项来指定输出结果的编码方式. 例如 希望以 UTF-8 编码方式在控制台输出结果时, 可像下面这样执行命令.

ruby -E UTF-8 脚步文件名   # ruby 执行方式

irb - E UTF-8 # irb 执行方式
上一篇 下一篇

猜你喜欢

热点阅读