编写阿拉伯语和英语混合的文本文件

2023-11-26

我正在尝试在文本文件中写入包含阿拉伯语和英语的句子,但问题是两种语言都有 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(使用前将#替换为@)

编写阿拉伯语和英语混合的文本文件 的相关文章

随机推荐

  • 滚动到带有标题的 Xamarin Forms ListView 的开头

    我在 Xamarin Forms 中滚动到 ListView 顶部时遇到一些问题 我可以通过调用 ScrollTo 并传递第一项来滚动到第一项 问题是 当列表有标题项时 我找不到滚动到标题的方法 这可能吗 我能想到的唯一解决方法是不使用标头
  • “new new Something”如何在 JavaScript 中产生有效的结果?

    我目前正在开发一个 JavaScript 解析器并研究ECMAScript 5 1 规范 这是目前令我困惑的一个问题 11 2 左侧表达式定义以下内容NewExpression生产 NewExpression MemberExpressio
  • 密码散列的盐也应该被“散列”吗?

    我认为这可能是一个愚蠢的问题 但我已经很困惑我应该在这里做什么才能最好 对密码哈希进行加盐处理时 盐是否也应该进行哈希处理还是保留为明文 注意 我正在对 SHA 256 中的密码进行哈希处理 并且 Salt 是预定义的字符串 因为一次只会存
  • 并发文件写入

    如何写入可由多个源 可能以并发方式 访问的文本文件 确保不会丢失写入操作 例如 如果两个不同的进程在同一时刻写入文件 这可能会导致问题 简单的解决方案 不是很快也不是很优雅 是在开始进程时锁定文件 创建 lock 文件或类似文件 并在写入完
  • 如何优化在 date 的 where 子句中包含 to_char 的 Oracle 查询

    我有一张表 其中包含49403459记录 我想查询某个日期范围内的表 说04 10 2010 to 04 10 2010 但是 日期以格式存储在表中10 APR 10 10 15 06 000000 AM 时间戳 结果当我这样做时 SELE
  • 在 .NET Web API POST/PUT 方法中使用继承的类

    我不知道如何在 Web API 控制器中使用继承的类 我have to create only oneAPI 控制器用于创建和更新数据库中继承的对象 与我的模型类似 所有这些模型都存在 Dto public class Animal pub
  • 在 WordPress 的自定义管理页面上提交表单

    我在 WordPress 管理中创建了一个自定义页面 其中有一个简单的文件上传字段和一个提交按钮 我需要弄清楚如何将页面提交到可以处理但在网络上找不到任何内容的地方 有谁知道表单上需要什么 操作 才能使其转到一个函数或另一个我可以处理文件的
  • 打印html元素时如何获得正确的渲染尺寸

    当将 html 元素打印到 A4 尺寸的纸张上时 我无法理解如何以正确的尺寸呈现 html 元素 为了说明我的目的 我将代码简化为一个 html 页面 其中包含一个红色边框的表格 该表格的尺寸应为 210mmx297mm A4 纸张尺寸
  • 通过 os.system() 终止进程中启动的脚本

    我有一个 python 脚本 它启动多个进程 每个进程基本上只是调用一个 shell 脚本 from multiprocessing import Process import os import logging def thread me
  • JavaScript 将 4 个字节的数组转换为 modbusTCP 读取的浮点值

    我正在尝试将 4 个字节的数组转换为浮点值 事情是这样的 我通过 ModbusTCP 从我的请求中得到答案 看起来像这样 data 16610 40202 buffer type Buffer data 64 226 157 10 该字符串
  • Hbase错误zookeeper存在3次退休后失败

    我在 Ubuntu 中使用 HBASE 0 94 8 独立模式 它工作正常 我能够在 Hbase shell 中执行所有操作 但在我登录我的系统后 它给出以下错误 15 07 28 15 10 30 ERROR zookeeper Reco
  • Guzzle 和 HTTPS

    我想使用 Guzzle 和 Silex 向 https 页面发送请求 通过 http url 我有一个响应 app gt get function use app client response client gt get http www
  • Laravel 模型中的动态填充

    陷入 Laravel 5 2 的问题 以下是 eloquent 创建操作 调用后 期间的错误 Model php 中的批量分配异常 453 column name 以下是需要考虑的先决条件 模型中的可填充项通过以下代码以动态方式填充 pub
  • 如何在android中捕获长按音量减小键?

    只是想知道是否有人可以告诉我如何捕获 android 中音量减小键的长按键 详细问题 我想创建一个广播接收器它将接收音量长按键事件 没有任何 UI 交互 我知道搜索按钮是可能的 音量键可以用吗 Thanks 也许下面的代码会对您有所帮助 O
  • 如何在 AngularJS 中设置 cookie 的过期日期

    我们希望将用户的授权信息存储在 cookie 中 该信息不应在浏览器刷新 F5 时丢失 我们希望将授权信息存储在 permanent cookie 中 以防用户在登录时选择 记住我 复选框 这在 1 4 0 版本的 Angular 中可以使
  • 计算适合矩形的最大字体大小?

    我试图找到适合给定字符串的给定矩形的最大字体大小 该算法的目标是用尽可能大的字体填充尽可能多的矩形 我的方法 根据我在网上找到的方法进行修改 做得不错 但它通常不能填满整个矩形 我希望看到一些关于如何改进该算法的合作 以便每个人都可以从中受
  • 如何通过 Maven API 获取 Artifact 下载 URL?

    我正在尝试创建一个 Maven 插件来生成一个文件 其中包含项目中所有依赖项的 URL 我已经能够获取依赖项及其工件 但在获取下载 URL 时遇到问题 使用 ArtifactResolver 和 ArtifactMetadataSource
  • 视频录制开启时,每 5 秒间隔保存一次视频(Android 操作系统)

    我想在视频录制打开时每 5 秒保存一次视频 我尝试了很多解决方案 但我面临着Glitch也就是说 最后保存的帧在预览中保留大约 300 毫秒 我认为原因是在 MediaRecorder 类中 一旦记录器停止 就需要在重新启动之前完全重新配置
  • 在原型继承中实现实例方法/变量

    读完后我一直在玩原型继承http javascript crockford com prototypal html并且在理解如何以使用经典继承的方式使用它方面存在一些问题 也就是说 原型继承的所有函数和变量本质上都会变成静态 除非它们被子对
  • 编写阿拉伯语和英语混合的文本文件

    我正在尝试在文本文件中写入包含阿拉伯语和英语的句子 但问题是两种语言都有 RTL 和 LTR 方向 因此输出文本文件不保存单词的顺序 并且某些单词出现在彼此之前 这是错误的 当我从记事本或任何文本编辑器更改文本方向时问题已解决 有什么方法可