2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

图分割算法荣获SC21时间检验奖

qife122

算法优化 图分割

Gunra勒索软件集团推出高效Linux变种

qife122

加密技术 勒索软件

零代码生成 3D 游戏:基于 Amazon Q Developer CLI 和 Three.js 的实践

亚马逊云科技 (Amazon Web Services)

大数据-60 Kafka 消息消费与心跳机制详解:原理、流程及参数调优

武子康

Java 大数据 kafka 分布式

无光不AI:AI算力,向光而逐

脑极体

AI

【开源项目】:基于go和antlr4实现一款高效跨语言的二进制协议编译器,释放你的协议开发效率!

歆晨技术笔记

golang 编译器 二进制 #java C++

基于开发者空间编写ODBC应用程序操作OpenGauss数据库

华为云开发者联盟

GaussDB(for openGauss) ODBC C++ API 接口 华为开发者空间

使用QDeveloper账号登录Kiro IDE

IT蜗壳-Tango

三级等保测评流程优化实践

等保测评

闭源精密战与开源敏捷性:能源管理系统的双线引领

开源能源管理系统

开源 能源管理系统

区块链Web3项目开发的进度管理

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

媒体曝光:联发科天玑 9500 GPU 光追可以开到 100 帧以上

科技范儿

基于语言模型架构的时间序列预测技术

qife122

机器学习 时间序列

HarmonyOS Next 高效开发模板与组件库(20250730更新)| 鸿蒙应用开发必备资源 Part1(含开发案例)

准时不早退的机器猫.

鸿蒙 HarmonyOS 模板 开发案例

合合信息亮相WAIC大会—推动AI鉴伪技术革新,打造可信数字世界【人工智能大会最新AI安全技术成果】

申公豹

人工智能

如何选择合适的LED显示屏像素间距?

Dylan

LED LED display LED显示屏 LED屏幕

多语言自监督忠实度评估框架解析

qife122

自然语言处理 多语言模型

基于Terraform构建AI会议摘要系统

qife122

人工智能 语音识别

基于多代理协作的智能电子取证解决方案

qife122

人工智能 多代理系统

MyEMS开源能源管理系统实际案例分析

开源能源管理系统

开源 开源能源管理系统 MyEMS

本地IntelliJ IDEA连接开发者空间-云开发环境,进行小游戏开发

华为云开发者联盟

云主机 IntelliJ IDEA 华为开发者空间

Conc,一个神奇的Go语言并发利器!

左诗右码

三级等保在哈尔滨智慧城市建设中的战略价值

等保测评

物理信息随机投影神经网络的线性稳定性分析

qife122

神经网络 数值分析

大模型训练故障恢复效率提升方案

qife122

机器学习 容错机制

“代码跑着跑着,就变快了?”——揭秘Java性能幕后引擎:即时编译器

poemyang

编译原理 Java虚拟机 即时编译器 JIT编译器 #java

星云低代码:低代码不再是平台,而是“中间件”

星云低代码中间件

低代码 开发工具 企业管理系统 Vue 3 #java

华为开发者空间使用CodeArts IDE调用API实现电商平台问答助手

华为云开发者联盟

AI+ 华为云CodeArts Qwen1.5 华为开发者空间

哈尔滨二级等保设备选型指南

等保测评

CST怎样安装补丁?CST Studio Suite 2022 SP2补丁包

思茂信息

电磁仿真 CST软件 CST Studio Suite

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