写点什么

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

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

关注

评论

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

1111111111111111111

用户7865398825

qqqqqqqqqqqqqqqqqq

用户7865398825

华为云classroom赋能 | Toolkit系列插件DevSecOps助力开发者提速

平平无奇爱好科技

华为云Classroom赋能 | Devstar使应用开发无需从零开始

平平无奇爱好科技

1111111111111

用户7865398825

全球选手逐鹿清华!首届AI药物研发算法大赛完美收官

飞桨PaddlePaddle

人工智能 百度飞桨 飞桨国赛

【附 Demo】悦数图数据库推出 Graph RAG: 减少大模型“幻觉”,优化向量数据库检索能力

最新动态

Katalyst:字节跳动云原生成本优化实践

字节跳动开源

开源 Kubernetes 运维 云原生 成本优化

【升职加薪秘籍】我在服务监控方面的实践(2)-监控组件配置

蓝胖子的编程梦

elasticsearch Prometheus 服务监控 #Grafana 微服务监控

软件测试|教你如何使用UPDATE修改数据

霍格沃兹测试开发学社

软件测试|SQL ORDER BY排序利器使用

霍格沃兹测试开发学社

MySQL数据库同步到SelectDB-技术解读

数据库小组

MySQL 数据仓库 数据处理 数据同步 SelectDB

软件测试|Mac安装appium报权限问题

霍格沃兹测试开发学社

软件测试|如何更新已经安装的Python第三方库

霍格沃兹测试开发学社

软件测试|SQL AND和OR运算符解析

霍格沃兹测试开发学社

Linux内核配置工具Kconfig

SkyFire

Linux Kenel Kconfig Config

不要用“完美主义”要求中国SaaS,当下需在平衡多方利益中渐进

B Impact

Go 数组

小万哥

Go 程序员 后端 开发 Google

深入剖析 FastAPI 多线程的最佳实践

Liam

Python 程序员 性能优化 后端开发 FastApi

小游戏分发平台如何争夺热门平台流量?

FinFish

小程序容器 小游戏 微信小游戏 小程序技术

斯蒂芬斯蒂芬斯蒂芬斯蒂芬

用户7865398825

对话火山引擎侯爽:字节原生的边缘云

火山引擎边缘云

边缘计算 边缘节点 边缘云

软件测试|Python科学计算神器numpy教程(十一)

霍格沃兹测试开发学社

【GO】LGTM_Grafana_Tempo(2) --- 官方用例改后实操

非晓为骁

golang 可观测性 Grafana Trace tempo

城市智能体+AI,赋能城市智能化

新消费日报

111111111111111

用户7865398825

软件测试|Python科学计算神器numpy教程(十)

霍格沃兹测试开发学社

软件测试|SQL中的LIKE模糊匹配该怎么用?

霍格沃兹测试开发学社

C++中的继承和派生

芯动大师

软件测试|自动化界面操作神器pywinauto教程(一)

霍格沃兹测试开发学社

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