首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

娃子鸭学Ruby-8、程序的编码

2012-12-22 
娃娃鸭学Ruby-8、程序的编码在最底层,Ruby程序是采用ASCII字符集编码的。默认情况下,Ruby解释器假定Ruby源代

娃娃鸭学Ruby-8、程序的编码
在最底层,Ruby程序是采用ASCII字符集编码的。
默认情况下,Ruby解释器假定Ruby源代码是采用ASCII进行编码的,但Ruby程序并不是必须要采用ASCII编码方式。

可以采用多种编码

1、指定程序所使用的编码
默认编码:ASCII
在Ruby1.8里,可使用-k命令行来指定一个不同的编码,采用-Ku选项来调用Ruby解释器,运行一个采用UTF-8编码的包含了Unicode字符的Ruby程序。
Ruby1.9
同样支持-K
运行时指定,不如让程序作者在文件开头放入一个特殊的“编码注释”来指定编码,如:
# coding: utf-8
注意:
1)该注释必须完全使用ASCII字符来编写,字符串coding后必须接一个冒号或等号,然后再接期望的编码名称,该名称不能包含空格,也不能包含除了连字符和下划线以外的标点符号)。
2)在冒号或等号的两边允许有空白符存在
3)字符串coding可以包含任意的前缀,如encoding
4)不区分大小写,可以随意采用大写或小写字符

#-*- coding :utf-8 -*-
#vi:set fileencoding=utf-8

没有Shebang注释就一定出现在第一行,否则就第二行
#!/usr/bin/ruby -w
# coding:utf-8

特例:如果一个文件的头三个字节是0xEF 0xBB 0xBF,那么该文件的编码方式就是UTF-8.
BOM(Byte Order Mark)。

Ruby1.9 
 关键字__ENCODIND__(开头结尾各有两个下划线)含有当前正在执行的代码的源编码,其结果值是一个Encoding对象。


2、源编码和默认外部编码
Ruby1.9理解源编码和默认外部编码的差别是非常重要的。
源编码:通常采用编码注释来设定一个文件的源编码。多个Ruby文件可以采用不同的源编码
源编码影响该文件中的字符串字面量的编码方式

默认外部编码是不同的,它是当Ruby从文件或流中读取内容时采用的默认编码。
默认外部编码对Ruby进程来说是全局性的,不会随着文件的不同而改变。
通常情况下默认编码是基于你的电脑的区域设置来进行设置的。
默认编码不改变字符串字面量的编码方式。

-K
事实上,这个选项真正做的事情是设置进程的默认外部编码,然后用这个编码作为默认的源编码。

Ruby1.9
-E
-encoding

ruby -E utf-8
ruby -Eutf-8
ruby --encoding utf-8
ruby --encoding=utf-8

Encoding.default_external查询外部编码
Encoding.locale_charmap获得从区域设置得到的字符编码的名称
2011-3-30 20:49

热点排行