`

娃娃鸭学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
分享到:
评论

相关推荐

    ruby-debug-ide

    本文将深入探讨ruby-debug-ide的功能、安装、使用方法以及与其他工具的集成,帮助你提升调试效率,打造更稳健的Ruby应用程序。 一、ruby-debug-ide概述 ruby-debug-ide是一个基于ruby-debug的库,它将调试功能暴露...

    src-oepkgs/ruby-ruby2ruby

    src-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2...

    ruby-oracle相关的数据库操作的gems包

    7. `ruby-oci8-2.1.0.tar.gz` 和 `ruby-oci8-2.0.6.tar.gz`:源代码包,可以自行编译安装。 8. `ruby-oci8-1.0.7.tar.gz`:同上,但为1.0.7版本。 9. `ruby-oci8-1.0.7-mswin32.rb`:可能是一个安装脚本,用于...

    ruby-1.8.7-p302.tar.gz

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302

    ruby-2.5.3-x64 下载

    标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...

    Ruby-GNOME2.zip

    Ruby-GNOME2提供GNOME 2.0开发环境的Ruby绑定,目前在活跃更新中。如果你喜欢GTK的界面,你一定会喜欢Ruby-GNOME2。GTK目前提供Linux、 Windows等多个平台的运行库,也就是说使用GTK开发的应用程序可以在多个平台下...

    ruby-oci8-2.1.5-x86-mingw32.gem

    ruby-oci8-2.1.5-x86-mingw32.gem,ruby连接oracle数据库gem包

    Ruby-程序设计-cn.pdf

    《Ruby-程序设计-cn.pdf》是一本详尽介绍Ruby编程语言的书籍,由GrantRen撰写,旨在为读者提供全面而深入的Ruby编程知识。本书不仅覆盖了Ruby的基础语法,还深入探讨了其高级特性,使初学者到高级用户都能从中受益。...

    ruby-debug-1.87.rar

    《Ruby调试工具:ruby-debug-1.87详解》 Ruby是一种动态、开源的编程语言,以其简洁的语法和强大的元编程能力深受开发者喜爱。在开发过程中,调试是必不可少的一环,而`ruby-debug-1.87`就是Ruby社区中广泛使用的...

    ruby-1.9.2-p290.tar.gz

    标题中的"ruby-1.9.2-p290.tar.gz"是一个开源编程语言Ruby的特定版本的归档文件,采用流行的tar和gzip格式进行压缩。这个版本是Ruby的1.9.2分支的一个更新点,标记为p290,意味着它是该分支的第290个补丁级别。在...

    ruby-2.2.0.tar.gz

    Ruby-2.2.0是Ruby编程语言的一个版本,它是一个强大的、动态的、面向对象的脚本语言,以其简洁的语法和强调程序员生产力而受到欢迎。Ruby在20世纪90年代由日本的松本行弘(Yukihiro Matsumoto)创建,它的设计哲学是...

    ruby-2.5.8.tar.gz

    - 解压`ruby-2.5.8.tar.gz`:使用`tar -zxvf ruby-2.5.8.tar.gz`命令解压。 - 编译与安装:进入解压后的目录,运行`./configure`,然后`make`和`make install`进行编译和安装。 - 验证安装:通过`ruby -v`检查...

    ruby-1.8.5.tar

    这个压缩包文件 "ruby-1.8.5.tar" 是针对 Linux 操作系统的,它包含了运行 Ruby 1.8.5 所需的所有文件和库。在 Linux 上,这种.tar 归档格式常用于打包和分发源代码,因为它可以方便地进行解压和编译。 Ruby 是一种...

    mongo-ruby-driverMongoDB的Ruby驱动程序-源代码

    MongoDB的Ruby驱动程序,即`mongo-ruby-driver`,是用于与MongoDB数据库进行交互的一个关键组件。这个驱动程序允许Ruby开发者利用MongoDB的强大功能,包括文档存储、分布式数据处理以及灵活的数据模型。在本文中,...

    sqlite3-ruby-mswin32.gem

    2. `sqlite3-ruby-1.3.1-x86-mswin32-60.gem`: 这个gem包同样为1.3.1版本,专为64位Windows系统(mswin32-60可能指的是Ruby 1.9.3的编译环境)设计,同样是针对x86架构的。 3. `sqlite3-ruby-1.3.1.gem`: 这是一个...

    Ruby-Geocoder完整的Ruby地理编码解决方案

    Ruby-Geocoder是一款强大的Ruby库,它为开发者提供了完整的地理编码解决方案。这个库的主要功能包括正向地理编码、反向地理编码以及距离查询,适用于基于地理位置的应用开发。下面将详细介绍这些功能及其应用。 1. ...

    ruby-1.8.7-p72-i386-mswin32.zip

    标题 "ruby-1.8.7-p72-i386-mswin32.zip" 提供的信息表明,这是一个针对i386架构的Windows 32位系统的Ruby编程语言的版本1.8.7,具体补丁级别为p72。Ruby是一种面向对象的、动态类型的脚本语言,由日本人松本行弘于...

    ruby-debug-base19-0.11.26.gem

    ruby-debug-base19-0.11.26.gem

    ruby-1.9.1-p0-i386-mswin32.rar

    在本压缩包“ruby-1.9.1-p0-i386-mswin32.rar”中,包含的是针对i386架构的Windows 32位系统的Ruby安装程序。这个版本(p0)意味着它是1.9.1主版本下的一个特定补丁级别,通常包括了一些错误修复和优化。 Ruby的...

    ruby-1.8.7-p174-i386-mswin32

    标题“ruby-1.8.7-p174-i386-mswin32”指的是一个特定版本的Ruby解释器,适用于32位的Windows操作系统。这个版本是Ruby的1.8.7线中的patchlevel 174,通常表示为Ruby 1.8.7-p174。Ruby是一种面向对象的、动态类型的...

Global site tag (gtag.js) - Google Analytics