我正在尝试在文本文件中写入包含阿拉伯语和英语的句子,但问题是两种语言都有 RTL 和 LTR 方向,因此输出文本文件不保存单词的顺序,并且某些单词出现在彼此之前,这是错误的,当我从记事本或任何文本编辑器更改文本方向时问题已解决,有什么方法可以使用 java 解决此问题吗?
正如我在对上一个问题的评论中所解释的,Unicode 文本文件按逻辑顺序存储字符。有记录的算法了解如何处理双向文本,以及可以插入到文本流中的控制字符,以向渲染器提供提示,例如,当英语句子中间有阿拉伯语引用时,在何处附加标点符号。
但最终,整个文本的顶层“主要”方向的选择是显示文本的组件的问题,而不是文本本身可以控制的事情 -renderer必须决定它是否正在处理包含一些阿拉伯语的主要是英语的段落,反之亦然。
例如,假设我有一个包含以下逻辑字符序列的文件(根据 bidi 算法规范中的约定,我使用小写字母表示从左到右的字符,例如英语,使用大写字母表示从右到左的字符,例如阿拉伯):
abc def GHI! JKL mno? PQR
配置为将文本主要视为 LTR 的查看器会将其呈现为
abc def LKJ !IHG mno? RQP
而配置为将其视为主要 RTL 的查看器将呈现完全相同的文字 as
RQP ?mno LKJ !IHG abc def
(相反,在没有控制字符的情况下,位于 LTR 和 RTL 段之间边界的标点符号将附加到与整个段落方向匹配的标点符号)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)