AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

SD-WAN在教育行业的应用与优势解析

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

优化商品搜索关键词:基于API返回值的智能策略

代码忍者

API 测试 API】

与人类产生情感共鸣?数字华夏推出“夏澜”人形机器人;微软Azure AI语音服务推出虚拟人形象|AI日报

可信AI进展

AIGC时代,如何为“数据飞轮”提速

字节跳动数据平台

大数据 数据中台 数据治理 数据安全 数据研发

可图大模型再进化,实现AI试衣自由!

快手技术

AI技术

虚拟化技术简介

天翼云开发者社区

云计算 虚拟化技术

Go必知必会:其实学Go很简单。

王中阳Go

Go 编程 Go入门

大型数字化企业采购堡垒机的五个必要性

行云管家

数字化 数据安全 堡垒机

DDD-3-领域模型

南山

领域驱动设计 DDD 领域模型

个人博客导航如何创建更有个性化

博客趣

个人博客 博科趣 m.bokequ.com 博客导航

比特币质押项目Babylon引发链上Gas费大战:散户转向第三方Restaking协议的可能性

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 公链开发

【云管小知识】云管平台可以纳管网络设备吗?

行云管家

云计算 云服务 云管理

MES系统:企业工单管理难题的智能化钥匙

万界星空科技

mes 万界星空科技 工单管理 生产管理MES系统 生产工单

走出舒适圈,将自动化智能技术作为财务增长的催化剂

智达方通

数字化转型 企业管理 全面预算管理 企业成长

SD-WAN供应商有哪些类型?怎么选择?

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

MCtalk·CEO对话×每刻科技:经济挑战期,企业如何将“好钢”用在“刀刃”上?

ToB行业头条

VOI云桌面与“无盘”是什么样的关系

上海锐起科技

桌面云 云桌面

淘宝官方商品、交易、订单、物流、插旗接口接入说明

tbapi

淘宝API 淘宝店铺订单接口 淘宝店铺订单详情接口 淘宝店铺订单物流接口 淘宝店铺订单列表接口

DDD-4-领域建模

南山

领域驱动设计 DDD 领域建模 领域模型

DDD-5-统一语言

南山

领域驱动设计 DDD 领域驱动 统一语言

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