写点什么

字符编码和 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:471837
用户头像

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

关注

评论

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

强化学习从基础到进阶--案例与实践含面试必知必答[9]:稀疏奖励、reward shaping、curiosity、分层强化学习HRL

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 分层强化学习

数字经济催生的低代码开发浪潮,JNPF带你轻松实现应用程序拓展!

引迈信息

typescript的必要性及使用 | 京东云技术团队

京东科技开发者

JavaScript 前端 企业号 6 月 PK 榜

清微智能TX5368A与飞桨完成Ⅱ级兼容性测试,助力全行业智能化升级

飞桨PaddlePaddle

人工智能 百度 paddle

编写轻量级 CSS 框架,看这篇就够了

伤感汤姆布利柏

CSS

亚马逊实践 | 构建可持续发展的架构模型

亚马逊云科技 (Amazon Web Services)

DevOps

【开发者福利】教你3步薅到免费GPU算力!

阿里云大数据AI技术

人工智能

为什么不应该给用户提示错误码

光毅

前端‘’

介绍 9 个研发质量度量指标

LigaAI

质量指标 研发效能度量 MTTR 研发效能管理 企业号 6 月 PK 榜

Tongsuo 8.4.0-pre1 发布啦!

铜锁开源密码库

算法 信息安全 密码学 数据安全 版本发布

Hologres弹性计算在OLAP分析上的实践和探索

阿里云大数据AI技术

大数据 OLAP 企业号 6 月 PK 榜

如何从消失的异常堆栈定位线上问题 | 京东云技术团队

京东科技开发者

缓存 TCP 异常堆栈 企业号 6 月 PK 榜

PoseiSwap IDO、IEO 结束,即将登录 BNB Chain

股市老人

语音合成技术与语音合成数据:赋予声音新的可能性

数据堂

基于STM32设计的炉温温度检测仪

DS小龙哥

6 月 优质更文活动

广州|阿里云 Serverless 技术实战营邀你来玩!

Serverless Devs

云计算 Serverless 托管服务

强化学习从基础到进阶--案例与实践含面试必知必答[10]:模仿学习、行为克隆、逆强化学习、第三人称视角模仿学习、序列生成和聊天机器人

汀丶人工智能

人工智能 深度学习 强化学习 模仿学习 逆强化学习

C++实现工资管理中的随机教师信息生成功能

芯动大师

PoseiSwap IDO、IEO 结束,即将登录 BNB Chain

BlockChain先知

亚马逊云科技中国峰会探访笔记 | 周边收集达人

IT蜗壳-Tango

方言语音识别技术:赋予方言更大的声音

数据堂

3Ds MAX 2024发布!新功能盘点!

Finovy Cloud

代码随想录训练营Day01- 数组(上)

jjn0703

算法 LeetCode 力扣

Health Kit 新版本功能解析,给你丰富运动体验!

HarmonyOS SDK

HMS Core

一文详解:大数据分析工具有哪些?

夜雨微澜

如何使用CSS Grid 居中 div

南城FE

CSS 前端 布局

微服务架构:探索微服务架构的核心概念

2756

#微服务

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