写点什么

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

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

关注

评论

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

EasyRecovery用法进阶--高阶设置使用技巧

淋雨

数据恢复 EasyRecovery 文件恢复 硬盘恢复

【译】JavaScript 代码整洁之道-概述篇

KooFE

JavaScript 大前端 6月日更 整洁代码

ARTS 打卡第11周

steve_lee

【LeetCode】山脉数组的峰顶索引Java题解

Albert

算法 LeetCode 6月日更

100个开箱即用的shell脚本,CV大法好,工作不费脑!

北游学Java

Java Shell

react源码解析12.状态更新流程

全栈潇晨

React

[译] Android 的 Java 9,10,11,12 的支持

Antway

6月日更

文档代码同源

不脱发的程序猿

开发规范 文档代码同源

实时音视频开发理论必备:如何省流量?视频高度压缩背后的预测技术

JackJiang

音视频 即时通讯 IM 视频编解码

互联网就业系列文(一)

HZFEStudio

互联网 就业

docker搭建Nginx和Tomcat负载均衡

叫我阿柒啊

nginx Docker 负载均衡

ONES CTO 冯斌 | 大型软件研发团队如何实践高效项目管理?

万事ONES

团队管理 ONES Project 研发团队

Go 语言学习路线来啦

roseduan

学习 Go 语言

缓存的世界Redis(一)

卢卡多多

redis 缓存 6月日更

EMQ映云科技边缘计算里程碑—Kuiper加入LF Edge基金会

EMQ映云科技

开源 云端 边缘流式数据 emq LF Edge

云图说|华为云自研云数据库GaussDB NoSQL,兼容多款NoSQL接口的数据库服务

华为云开发者联盟

nosql Influxdb Cassandra mongo GaussDB NoSQL

ONES CTO 冯斌 | 升级项目管理体系,加速金融行业数字化转型

万事ONES

项目管理 研发管理 数字经济 ONES

全新升级IoT Stack 2.0和度能2.0,百度持续加码为产业智能化安全护航

百度大脑

百度智能云

击破行业痛点,区块链赋能智慧物流高速发展

旺链科技

区块链 智慧物流

你应该知道的数仓安全

华为云开发者联盟

数据加密 数仓安全 透明加密 SQL函数加密

敏捷绩效管理三剑客:OKR 、KPI、CFR

CODING DevOps

DevOps OKR 敏捷绩效 绩效管理

Python——元组的使用

在即

6月日更

并发王者课-黄金3:雨露均沾-不要让你的线程在竞争中被“饿死”

MetaThoughts

Java 多线程 并发 并发王者课

Apache Drill 1.19.0 发布集锦

MPP Apache Drill 联邦查询和分析

网络安全逐渐成为程序员的必备技能

学神来啦

Linux 程序员 安全 渗透

什么是Python中的套接字编程?

华为云开发者联盟

Python 编程 socket 网络 套接字

推荐学Java——应该了解的前端内容

逆锋起笔

Java 大前端 后端 JAVA开发

详解Vue八大生命周期钩子函数

华为云开发者联盟

Vue 对象 函数 Vue实例 八大生命周期

重启心智解锁,重新获得一份能力精进指南,面对不确定性的未来,我们可以和世界的变化做好友。

叶小鍵

Flink Metric

Alex🐒

flink 翻译 flink1.13

【融云视角】沉浸式音频与通讯技术未来趋势

融云 RongCloud

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