写点什么

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

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

关注

评论

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

亚马逊云基础架构:一场从未停歇的技术创新革命

亚马逊云科技 (Amazon Web Services)

架构 亚马逊云

JavaScript== 和 ===

源字节1号

软件开发 前端开发 后端开发 小程序开发

发现一个开源项目优化点,点进来就是你的了

捉虫大师

开源 性能优化 sentinel 5月月更

DCM:一个能够改善所有应用数据交互场景的中间件新秀

华为云开发者联盟

数据处理 数据交互 多样性数据源 DCM

海豚调度5月Meetup:6个月重构大数据平台,帮你避开调度升级改造/集群迁移踩过的坑

白鲸开源

Apache 大数据 开源 DolphinScheduler workflow

大数据培训 | 数据仓库构建方法论和实践

@零度

数据仓库 大数据开发

知识管理在企业创新中的作用

小炮

知识管理

技术分享| 浅谈IM 产品中的“缩略图”功能

anyRTC开发者

音视频 IM 实时消息 发送图片 缩略图

Python 编程

兮子

5月月更

GPU不可不知的指标项

AIWeker

人工智能 gpu 5月月更

监控告警平台的国产化选择—Rancher与夜莺的集成

Rancher

Kubernetes k8s rancher

青藤《关键信息基础设施增强保护安全实践》论文入选中国科技核心期刊

青藤云安全

信息安全 关键信息 安全保护

墨天轮高分技术文档分享——Oracle升级迁移篇(共96个)

墨天轮

MySQL 数据库 oracle postgresql 国产替代

使用 Amazon DevOps Guru for Serverless 自动检测 Lambda 函数中的运行问题

亚马逊云科技 (Amazon Web Services)

DevOps Lambda severless

java培训 | API 接口如何实现统一格式返回

@零度

JAVA开发 API

全场景式全流程监控,博睿数据为券商IT运维难题提供范例

博睿数据

数字化转型 博睿数据 数据链DNA 证券行业

Wallys/QCN9074 /11ax 4x4 6G M.2

wallys-wifi6

wifi6 m.2

Spring Cloud OpenFeign 的 5 个优化小技巧!

王磊

SpringCloud

无聊科技正经事周刊(第8期):让子弹飞一会儿,用长期的眼光看中国开源

潘大壮

开源 程序员 周刊 开源中国 科技周刊

web前端培训 | Tree shaking问题排查

@零度

web前端开发

洞见科技数据科学家王湾湾:隐私计算助推金融业数字化转型

洞见科技

数据挖掘 金融科技 隐私计算

有没有支持vmware/openstack/zstack私有云的堡垒机?

行云管家

私有云 云服务器 堡垒机 行云管家

Wallys/QCN9074 /11ax/ 4x4 /5G M.2

wallys-wifi6

QCN9074 11 ax

汇顶科技GR551x系列开发板已支持OpenHarmony

科技汇

开源夜聊栏目开播:聊聊新晋 CNCF 项目 sealer 背后的故事

阿里巴巴云原生

阿里云 开源 云原生 直播

单机GPU云服务器的深度学习训练和预测模型分析

Finovy Cloud

云服务器 GPU服务器

国内私有云厂商有哪些?排名怎么样?

行云管家

网络安全 私有云 私有云厂商

剧透!2022开发者关注的开源技术全解析

华为云开发者联盟

开源 mindspore kubeedge OpenHarmony open Euler

创建自定义的配置信息

Wk

5月月更

直播预告丨 OpenHarmony 标准系统多媒体子系统之相机解读

OpenHarmony开发者

OpenHarmony

直播预告 | 服务网格规模化应用下的 Istio Sidecar 灵活配置实践

阿里巴巴云原生

阿里云 云原生 直播 服务网格 Istio Sidecar

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