AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

CDC YAML 在阿里云的最佳实践

Apache Flink

大数据 flink 实时计算 yaml

为智算“强心”,为园区“壮体”:新质互联网驶入标准化快车道

脑极体

AI

数智化赋能龙港中医院,让医疗服务有了“人情味”

Alter

阴阳怪气的「道歉」背后,是新闻从业者的一次呐喊

TechubNews

科技掌握一切,智慧引领发展:财务规划技术与思维的碰撞

智达方通

企业管理 财务分析 科技创新 财务规划 预算分析

AI领航 共启出海|易点天下中国创新科技企业出海高峰论坛圆满举办

新消费日报

MPC2024开幕演讲

明道云

确保对象的唯一性实现

测吧(北京)科技有限公司

测试

企业数智化转型:低代码开发的五大优势解析

不在线第一只蜗牛

低代码 数智化

http请求超时, 底层发生了什么?

不在线第一只蜗牛

网络协议 网络 HTTP

单链表与双链表的应用与常见算法

测吧(北京)科技有限公司

测试

第77期 | GPTSecurity周报

云起无垠

OWASP Top 10 安全漏洞与安全防护体系

测吧(北京)科技有限公司

测试

直播电商,正在被内容逻辑重塑

趣解商业

直播 电商 抖音

2024年好用的AI工具盘点!办公效率快到飞起!

职场工具箱

人工智能 职场 办公软件 AIGC AI生成PPT

通义开源语音处理框架 ClearerVoice-Studio;亚马逊 Nova 计划明年发布端到端语音模型丨 RTE 开发者日报

声网

淘宝天猫API接口探索:轻松实现商品详情与关键字搜索

代码忍者

API 接口 pinduoduo API

美团一面,有点难度

王中阳Go

Go 后端 面试问题

和鲸分享| 世界500强莫德纳公司首席数据科学家Eric J. Ma:协同数据科学的制胜秘诀!

ModelWhale

Python 人工智能 大数据 R语言 大模型

告别编码难题,JeeLowCode让应用开发更简单!#高效开发

JeeLowCode低代码平台

鸿蒙NEXT开发中如何确保使用 PersistentStorage 存储的数据安全?

威哥爱编程

HarmonyOS HarmonyOS NEXT

SD-WAN的核心服务能力

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SD-WAN国际专线

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