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:472097
用户头像

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

关注

评论

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

前端页面测试如何定位漏测代码

Hi-CodeCaptain

软件质量 测试覆盖率 精准测试 前端代码 前端覆盖率

强到连何同学都抄袭的ASCII-generator是什么鬼

Y11

Python OpenCV 开源、 image-to-text image-to-image

可视化工具对比:JimuReport VS QuickBI

JEECG低代码

数据可视化 数据大屏 报表工具 仪表盘设计

淘宝关键词搜罗神器:深入探索淘宝商品搜索API接口

代码忍者

API 接口 pinduoduo API

BTC矿工转向AI数据:普通人如何低成本布局AI赛道

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

茶思屋直播|构建多元共生的生态空间:TinyEngine生态的融合之道

OpenTiny社区

开源 前端 低代码 OpenTiny

制造业生产遇到“瓶颈”,MES系统帮您重新赋能!

积木链小链

制造业 mes

《Django 5 By Example》阅读笔记:p679-p765

codists

Python django

「工作流Agent」亮相百度世界大会,百度智能云千帆 AppBuilder 产品功能重磅升级

Baidu AICLOUD

rag

Navicat Premium 15 for Mac(数据库开发工具) v15.0.36中文激活版

小玖_苹果Mac软件

操作系统加码主动防护:数智化有了“安全底座”

Alter

操作系统 openEuler AI 基础设施

使用 NGINX 和 NGINX Plus 实现负载均衡(第 2 部分)

NGINX开源社区

负载均衡 读书笔记

淘宝京东商品详情页接口

tbapi

淘宝API接口 京东API接口 淘宝商品详情接口 京东商品详情接口

DriveDx for mac(mac磁盘健康检测和监控工具) v1.12.1激活版

小玖_苹果Mac软件

DApp、链游与交易所的盈利点解析:如何在区块链生态中挖掘财富?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

枫清科技亮相 2024 中国 5G+工业互联网大会,推动 AI 赋能新型工业化

Fabarta

智能体 大模型

更快、更稳、更优,揭秘火山引擎全站加速 DCDN 规模容器化最佳实践

火山引擎边缘云

容器 云原生 边缘计算 全站加速

鸿蒙NEXT开发案例:随机数生成

zhongcx

AE 3D粒子系统插件:Trapcode Particular for Mac 激活版

你的猪会飞吗

mac软件下载 Mac破解软件

BetterDisplay Pro Mac(显示器管理工具) v2.0.11激活版

小玖_苹果Mac软件

实时多模态 AI 的 N 种新可能丨实时互动和大模型专场@RTE2024回顾

声网

Java哪个框架适合开发API接口?

科普小能手

API java框架 Java 开发 API 接口 Java.

Redis性能优化的18招

不在线第一只蜗牛

redis

“融为本,数为源,智为力”开启财务数智化转型华章

用友智能财务

财务 企业数智化 企业数智化转型

快递鸟电子面单批量打印API接口Demo免费下载

快递鸟

快递物流 电子面单

淘宝店铺商品全览:揭秘淘宝店铺所有商品API接口的无限商机

代码忍者

API 接口 pinduoduo API

鸿蒙NEXT开发案例:随机密码生成

zhongcx

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