写点什么

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

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

关注

评论

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

如何在 Windows 上安装 SQL Server,保姆级教程来了!

霍格沃兹测试开发学社

ETL中元数据处理的方式

RestCloud

数据处理 元数据 ETL 数据集成

淘宝/天猫按关键字搜索API:返回值详解,轻松获取商品信息

技术冰糖葫芦

api 货币化 API 接口 API 文档 API】 pinduoduo API

开发备受欢迎的网络直播体育赛事平台,需要这些内容和功能

软件开发-梦幻运营部

Python 中删除文件夹下文件的方法详解

霍格沃兹测试开发学社

用海外云手机做tiktok怎样保障安全性?

Ogcloud

云手机 海外云手机 tiktok云手机 国外云手机 tiktok运营

CentOS 系统常用命令详解

霍格沃兹测试开发学社

淘宝/天猫API接口:轻松获取商品详情原数据

技术冰糖葫芦

如何在 Windows 上安装 SQL Server,保姆级教程来了!

霍格沃兹测试开发学社

​腾讯云异构计算平台全面支持Llama 3,助力一键部署、性能翻倍

Geek_2d6073

如何通过代理服务器加速您的网站浏览体验

摘星星的猫

预测分析中的场景管理,适应不断变化的市场环境

智达方通

企业管理 全面预算管理 财务管理 预算预测分析 场景管理

Flink 作业管理器:核心功能、角色与责任详解

木南曌

flink 实时计算

使用 Dockerfile 构建和定制 Docker 镜像

霍格沃兹测试开发学社

助力数智化转型:使用检索增强生成【RAG】构建物业行业大模型

智在碧得

深度学习算法 AI大语言模型 大语言模型 人工智能深度学习 #大模型

Python 字符串格式化指南

霍格沃兹测试开发学社

管理者如何在团队里讨论敏感话题

伤感汤姆布利柏

流水线运行出错排查难?AI 来帮你

阿里云云效

阿里云 云原生 云效

企业未来都会用上云原生开发工具吗?它有什么优势

Tp_jh

AI 云原生 K8s 多集群管理

企业规模扩大,SD-WAN实现跨省快速组网

Ogcloud

网络协议 网络加速 SD-WAN 企业组网 SD-WAN组网

EMQX Platform 产品发布会回顾:全球部署与无缝数据集成,驱动汽车行业智能化转型

EMQ映云科技

mqtt mqtt broker

信创发展到现在技术上有什么关注重点

Onegun

信创 信创产业 信创化

流水线运行出错排查难?AI 来帮你

阿里巴巴云原生

阿里云 云原生 云效

淘宝商品详情API接口:全面解析商品属性与数据

技术冰糖葫芦

api 货币化 API 接口 API 文档 API】 pinduoduo API

TapData + 实时数仓:实时数据如何赋能船舶制造业,助力数字化应用升级和科学管理运营

tapdata

大数据 实时数仓场景实践

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