当我在记事本或MS Word上的任何阿拉伯语/乌尔都语/波斯语文本中插入英语单词时,为什么单词会被洗牌?

Arf*_*een 26 ms-word bidi arabic persian direction

我可以在MS Word或Notepad上写阿拉伯语/乌尔都语/波斯语就好了,但每当我插入任何英文单词或数字时,序列就会受到干扰,看起来所有的单词都在句子中被洗牌了.

看下面的例子:

?? ??? ???? ?? ???? ?? ...
Run Code Online (Sandbox Code Playgroud)

现在我插入了一个英文单词,它变为:

 ?? ??? ???? ??word  ???? ?? ...
Run Code Online (Sandbox Code Playgroud)

所以你可以看到几乎所有的单词都被混淆了......解决方法是什么?

小智 14

例如:

باللغةالعربية"keyboard"اناأريدأنأعرفالكلمة

  1. 完成键入阿拉伯语单词并在其后面添加一个空格(此空格将嵌入文本与阿拉伯语文本分开).
  2. 插入特殊字符U + 200F(将前面的空格渲染为阿拉伯字符).角色名称是"从右到左标记".
  3. 插入特殊字符U + 202A(开始从左到右嵌入).字符名称是"从左到右嵌入".
  4. 插入另一个空格(将嵌入的文本与将继续向左的阿拉伯文本分开).
  5. 将键盘更改为例如英语并键入从左到右的单词.
  6. 插入特殊字符U + 202C(将bidrectional状态恢复为从左到右嵌入之前的状态).角色名称是"流行方向格式".
  7. 将键盘更换回来并继续用阿拉伯语书写.

如果您在Microsoft Office或Open Office中工作,可以在"插入"[插入 - >符号 - >其他符号 - > MS 2013中的特殊字符]下找到"特殊字符".滚动浏览直到找到具有相应Unicode编号的字符,如果您的MS Word版本中未出现Unicode编号,请按名称选择它[如上所示].

您也可以通过编写unicode然后选择它并按Alt + X来添加角色 - 但这可能会令人困惑,因为它需要阿拉伯语和英语之间的不断变化.

这个小动作中涉及的所有特殊字符都是隐形字符(它们的工作只是改变文本的方向)所以如果看起来你没有插入任何东西,不要感到惊讶.

当段落的大部分是RTL时,请注意从功能区中选择RTL选项并保持选中[如本答案/sf/answers/3223512001/中的图片所示].


Hos*_*ein 7

还行吧; 它们没有被洗牌:你在LTR渲染模式下看到它们.

你只需要从右到左制作它们.在记事本或Word中,按右Ctrl + Shift键使其方向从右向左,这样就可以了.(就像<p dir="rtl">...</p>在HTML中一样).

控制字符LRE和RLE(0x202A和0x202B)以及LRM和RLM(0x200E和0x200F)需要应用于整个段落,即它们应该出现在序列的开头.某些平台的某些文本显示小部件可能会丢弃这些控制字符,特别是较旧的(2000之前的)平台或那些不正确支持Unicode双向算法的平台.较新的操作系统和程序应该没问题; 以Windows Notepad为例.

我个人建议使用平台的方法来制作文本RTL,并避免使用特殊控制字符,因为它们是不可见的,如果它们失去控制可能会导致令人惊讶的结果.因此,您最好使用Word的API来生成文本RTL,或者如果您的输出是HTML,则将它们放在<div dir="rtl">...</div>标签中.对于纯文本文件,用户必须自己手动按下Ctrl + Shift键.


Abb*_*bas 7

  1. 在开始输入阿拉伯语/波斯语之前,请确保已选择"从右向左"方向按钮.此按钮可以在AZ排序按钮左侧的段落选项卡上找到.同时选择"右对齐文本"按钮,该按钮可在"对齐"按钮的"段落"选项卡左侧找到.

  2. 开始输入您的语言

  3. 在放一个英文单词之前放一个空格然后选择左ALT + SHIFT并输入你的英文单词

  4. 完成英语单词后,选择右键ALT + SHIFT,然后放一个空格并继续输入您的语言

希望这可以帮助


Juk*_*ela 5

在“开始”窗格的“段落”部分中选择段落(例如,使用三次单击),然后使用从右到左方向(¶?)的按钮。

正如侯赛因的回答所解释的那样,问题在于该段落中的方向性。当您插入拉丁字母时,它会从左到右更改,您需要手动解决。


Gha*_*dir 5

编辑:这是作为对这里第一个答案的澄清答案而写的,我后来编辑了第一个答案并添加了我在这里写的重要注释[尽管编辑仍然需要批准]。


我能够按照此处第一个答案中的步骤修复我的文本。如果有人在执行步骤时遇到麻烦,让我澄清一些事情:

如果您在阿拉伯文本中输入英文单词,请确保选择了功能区中的 RTL 选项[下图中以红色圈出]:

截屏

无论您使用何种语言,在整个段落中都保持选中状态 [只要段落的大部分内容是用 RTL 语言(如阿拉伯语或希伯来语)编写的]。

在哪里可以找到特殊字符以及如何插入它们:

您可以编写字符的 unicode,然后选择它并按“Alt + X”。但是,这可能有点令人困惑,因为需要在英语和阿拉伯语之间来回更改才能编写代码,因此最好的办法是通过插入他们的姓名“手动”输入它们。

你可以通过插入 -> 符号 -> 更多符号 -> 特殊字符 [向下滚动] 来做到这一点。然后选择您需要使用的字符名称而不是其 unicode。

您需要使用的字符名称 [如此处第一个答案中所指定] 是:

  • “从右到左标记”:U+200F。
  • “从左到右嵌入”:U+202A。
  • “流行方向格式”:U+202C。

正如第一个答案所说,屏幕上不会出现任何内容,因为它是一个非打印字符,所以如果您在插入时感觉什么也没发生,这是正常的。

如果您需要反过来做,即在英文文本中插入希伯来语或阿拉伯语单词,只需反转 unicodes 的使用——或按照以下链接中的步骤操作:https ://superuser.com/ a/1247476/767967

如果您想了解更多关于特殊字符的作用以及使您的段落 LTR 或 RTL 的含义,请访问以下链接:http : //dotancohen.com/howto/rtl_right_to_left.html#Directionality


Vah*_*idN 3

您需要在行[^]的开头添加一个不可见的 RLE Unicode 字符。它是: 0x202B 十六进制 = 8235 十进制或从右到左嵌入 (RLE)。这对于记事本来说是必需的,但 MS-Word 可以处理它。您需要正确对齐文本。

如何输入RLE:http://www.fileformat.info/tip/microsoft/enter_unicode.htm