双向数据支持
运行时环境包含对双向数据的支持,可以从右至左写入文本,也可以从左至右写入。
在 Java™ 运行时环境中,字符数据作为 Unicode UTF-16 值进行处理。 但是, Java 运行时环境外部的字符数据经常符合不同的编码。 出于这个原因,伴随字节与字符之间转换的文件输入/输出操作也涉及外部编码与 UTF-16 之间的转换。 例如,您可以在 InputStreamReader 或 OutputStreamWriter 对象的构造方法中指定外部编码,或者依靠缺省编码。
通过实现 Unicode 标准, Java 运行时环境支持多种语言,这些语言具有各种字母或 脚本。这些语言包括阿拉伯语和希伯来语,其脚本从右到左编写。 由于阿拉伯语和希伯来语文本经常与从左到右编写的其他语言 (和数字) 混合使用,因此 Java 运行时环境必须能够处理双向数据。
双向数据比非双向数据更加可变,因为它不仅可以存储在各种编码中,而且可以各种布局存储。 每种布局都是字符排序规则(针对阿拉伯语和希伯来语)和阿拉伯字母字型(从多种可能中选择阿拉伯字母的字型)的组合。
由于 Java 运行时环境将数据从外部编码转换为内部编码和后退的相同原因,它应该将双向数据从外部布局转换为 Java 运行时环境中使用的布局。 例如,较旧的应用程序可能会将数据存储在 可视 布局中,而 Java API 采用 隐式 布局 (也称为 逻辑 布局)。
在 Java 运行时环境中,每当运行编码转换时,都可以请求对双向数据运行布局变换。 缺省情况下,已禁用这些转换。 要启用变换,请在启动 Java 应用程序时设置 JAVABIDI 系统属性。 有关更多信息,请参阅 -DJAVABIDI。
您还可以直接在 Java 代码中使用双向布局引擎 API。 有关更多信息,请参阅 API 参考文档中的 双向支持 。