写点什么

字符编码和 M17N 详解

  • 2009-05-18
  • 本文字数:784 字

    阅读完需:约 3 分钟

James Edward Gray II 近期发表了十个同一系列名为《Understanding M17n》的文章,均是关于Ruby 的字符编码问题。

Ruby 1.9 做出了很多关于字符支持的修改,现在能够很好地支持多种和混合字符编码了。这些需求是在一些项目中确实存在的,尤其是为全世界用户开发的开源项目中。

他从基础开始讲起,介绍了什么是 Unicode 以及其编码方式,接着发表了一些 Ruby 1.8 的帖子,例如使用iconv 进行编码以及Ruby 1.8 是如何处理Unicode 的。然后综合论述了 Ruby 1.9 的 String 以 Ruby 1.9 和其他语言的区别:

通常开发者都会选择一个全能的编码,例如 Unicode 编码,然后所有的数据都会是这个编码格式。Ruby 1.9 采取了一种不同的方法。它不仅仅局限于选择一种编码,Ruby 1.9 能够同时处理超过 80 种编码的数据。

Ruby 1.9 的 m17n 的一个新特性是三种默认编码,而 Ruby 1.8 只有单一的全局变量。但是为什么我们需要这么多编码呢?考虑以下的情景:

我也许希望我的代码是 UTF-8 的,但是一些日本程序员希望它们的代码是 Shift JIS。Ruby 应该支持这个,确实 1.9 也支持了这个特性。我们把这个情景搞复杂一点:想像一下我把我的 UTF-8 的代码打包到一个 gem 之后,有日本程序员希望在它的 Shift JIS 代码重使用这个 gem。我们如何无缝地进行工作?

阅读关于 Ruby 1.9 的三种默认编码的主题。 最后一篇文章包含了各种话题,例如在二进制数据编码和正则表达式数据编码。

阅读完这十个主题之后,你应该已经明白了Ruby 1.9 的强大的m17n 特性以及给你带来的灵感,即使你仍然打算现在坚守在Ruby 1.8 的平台上。如果你并不足够了解Unicode,如果还没有读过的话,你也许需要阅读一下Joel Spolsky 的传世之作《The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)》

查看英文原文: Character Encodings and M17N Explained

2009-05-18 11:471729
用户头像

发布了 90 篇内容, 共 34.9 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

Flutter Hero 动画组件的飞行过程显示控制

岛上码农

flutter ios 安卓 移动端开发 跨平台开发

同盾科技 x TiDB丨实时数据架构为风控智能决策保驾护航

PingCAP

#TiDB

阿里云张献涛:无影,让计算触手可及

云布道师

无影云电脑

EditText(输入框)详解

芯动大师

android edittext 输入框设计 文本框(TextView)

2023-01-06:给定一个只由小写字母组成的字符串str,长度为N, 给定一个只由0、1组成的数组arr,长度为N, arr[i] == 0表示str中i位置的字符不许修改, arr[i] ==

福大大架构师每日一题

算法 rust Solidity 福大大

Python专属搜索引擎!又一款Python库学习神器?

Jackpop

Smart Finance成为火必投票竞选项目,参与投票获海量奖励

鳄鱼视界

2022 OpenMLDB 硕果累累,颁奖台上荣耀连连

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

科技创新实力受认可,网易有道入选 2022 中国技术品牌影响力企业榜

有道技术团队

技术 数据分析

WorkPlus平台多业务系统集成,让企业沟通协作更畅通

BeeWorks

Apipost接口自动化测试功能详解

测试人生路

Postman 自动化测试 接口自动化测试

性能测试技术笔记(三):如何设计一个压测平台

老张

性能测试 压测平台

推动GameFi走向新叙事的Smart Finance,成为火必投票竞选项目

股市老人

关于接口测试自动化的总结与思考

阿里巴巴云原生

阿里云 云原生 TPS

TiDB 6.5 LTS 发版

PingCAP

#TiDB

CMD有哪些有趣的命令?

Jackpop

Java学习者看过来!这些优质项目千万别错过

Jackpop

数字人民币创新浪潮来袭,支付机构如何“乘风破浪”?

易观分析

金融 数字人民币 数字支付

软件测试 | 测试开发 | 相比Selenium,Web自动化测试框架Playwright

测吧(北京)科技有限公司

测试

创作技术博客以来的一些成就

嵌入式视觉

知乎 博客 CSDN 博客园

Kyligence 客户案例“泰康集团精细化经营分析与运营平台”获评数据智能最佳实践案例

Kyligence

数据分析 指标管理

企业专用的即时通讯产品如何选择?

BeeWorks

好家伙!阿里最新SpringBoot进阶笔记涵盖了SpringBoot所有骚操作

程序员小毕

程序员 后端 ssm springboot java面试

8.3K Star!这才是我们苦苦寻找的PDF阅读器。。。

Jackpop

Apipost——让前端、后端、测试共用一份API文档!

不想敲代码

云渲染动画价格一般多少?

Renderbus瑞云渲染农场

云渲染 云渲染价格

一加11:新的赛场,“不温和”的答卷

脑极体

连续四年发布科技趋势预测,他们在探索中国科技的“主干道”

脑极体

Git遇到冲突?解决也太简单了!

Jackpop

Github上有什么好的unity开源项目?

Jackpop

字符编码和M17N详解_Ruby_Mirko Stocker_InfoQ精选文章