写点什么

JRuby 1.0 里的 Unicode 状态和 Ruby 兼容性

  • 2007-04-10
  • 本文字数:862 字

    阅读完需:约 3 分钟

过去,JRuby 的字符串问题是一直是个难题。对于字符串,Ruby 使用字节数组表现;而 Java 则全面支持 Unicode 字符串,在内部表现为 UTF-16。由于这种差别,运行在 Ruby 上的代码如果要运行在 JRuby 上就可能会出现问题,正如 Charles O. Nutter 解释的那样:

但是 API 不符合 Ruby 应用程序的预期,经常将个别字符返回为 16bit 的值,并报告不正确的字符串字节长度,且无法将该字符串编码为全部由 8bit 的字符组成的字符串。只要 Ruby 代码涉及到这样的字符,就会出问题。

他继续描述了 JRuby1.0 中的解决方案: > 1. Ruby 字符串是 byte[] 类型且符合 Ruby 字符串语义。

  1. 传入 Ruby 代码的 Java 字符串将被编码为 UTF-8,这暗示了你应该在接收参数的代码中用 UTF-8 byte[] 来工作。
  2. Ruby 字符串传出到 Java 时也被假定为 UTF-8,Java 端调用的返回结果应该符合该假定。

调整字符串编码只是众多工作中的一个,为了达到与 Ruby 的完美兼容,还需要做许多单调乏味的工作。 一个相关的话题是在 JRuby 上支持 Ruby 正则表达式。简单的解决方案是直接用 java.util.regex——Java 中自带的正则表达式类库,来处理 Ruby 正则表达式。这个方案已经用了很长一段时间。可是,不断有不同的 Bug 报告进来,同时出于其他一些方面的考虑,我们觉得需要一个更好的解决方案。java.util.regex 的性能问题是众所周知的,而且在 JRuby 内部使用字节数组表示 Ruby 字符串会使性能问题更甚(java.util.regex 工作时不直接使用字节数组,因此需要先将 Ruby 字符串进行转换)。 因此,JRuby 的核心组成员 Ola Bini 决定直面困难,重新选择一个解决方案。他先选择了 JRegex 作为临时的替代解决方案,目前他正在致力于 REJ 方面的工作,这是他的描述: > REJ 是一个我已经启动的项目,它将成为 MRI 1.8.6 正则表达式引擎的直接端口。这一点很重要,因为这样 JRuby 的语义将与 MRI 紧密匹配。我们将能够匹配 UTF-8、SJIS 和 EUC 正则表达式等,并且我们将具有像 MRI 一样的特别功能,即使人们并不一定依赖于这样的特别功能。

到 2007 年 5 月,所有这些工作将确保 JRuby 1.0 尽可能地接近 Ruby。

2007-04-10 22:28965
用户头像

发布了 150 篇内容, 共 47.9 次阅读, 收获喜欢 10 次。

关注

评论

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

Java 数学运算与条件语句全解析

小万哥

Java 程序人生 编程语言 软件工程 后端开发

Primevue项目中使用qiankun

麦兜

低代码流程引擎在数字设计平台的应用:简化创作流程,提升生产效率

不在线第一只蜗牛

低代码 数字化 流程引擎

ACK One Argo工作流:实现动态 Fan-out/Fan-in 任务编排

阿里巴巴云原生

阿里云 云原生 argo

1 月 NFT 市场动态:Polygon 增长,Mooar 崛起,TinFun 掀起文化浪潮

Footprint Analytics

加密货币 NFT 链游

苹果证书过期有什么影响

一键部署,5秒开服!最强《幻兽帕鲁》服务器攻略来了!

YG科技

极致成本,如何基于容器计算服务 ACS 打造企业级幻兽帕鲁私服 SaaS 服务?

阿里巴巴云原生

阿里云 容器 云原生 OpenKruiseGama

Databend 开源周报第 131 期

Databend

ai全称是什么?好用的AI软件有哪些?这14款一定要知道。

彭宏豪95

AI 在线白板 AIGC AI绘画 效率软件

运营商数智化缩影:一部哑资源的资源管理史

鲸品堂

网络 资源 运营商 企业号 2 月 PK 榜

用云手机打造tiktok账号需要注意些什么?

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版

海外云手机:入局海外市场的最佳利器

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

解密 ARMS 持续剖析:如何用一个全新视角洞察应用的性能瓶颈?

阿里巴巴云原生

阿里云 云原生

全世界 LoRA 训练脚本,联合起来!

不在线第一只蜗牛

Java 架构 前端开发

成品语聊平台源码快速搭建之部署系统环境

山东布谷科技胡月

语音社交平台搭建 语音直播平台开发 语音聊天室开发

有奖讨论丨你能看出来哪些是 AI 写的代码么?

阿里巴巴云原生

阿里云 AI 云原生

Tiktok云手机是什么,做tiktok养号有什么优势?

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版

2023年行摄回忆录

穿过生命散发芬芳

行摄回忆录 盘点2023

一致性哈希算法

乐只

一致性Hash算法 分布式协议

今年春节百度网盘把AI玩透了:龙年艺术写真、宠物表情包、定制祝福语

彭飞

JRuby 1.0里的Unicode状态和Ruby兼容性_Java_Werner Schuster_InfoQ精选文章