我在OS10.10.5的Macbook上使用PHP,Python和MySQL。 我在MySQL中存储了以下句子:
然而,当我使用Python或MySQL来检索该字符串时,它出现为:
محمودالسقالCNN:النظاميؤدبثورةيناير
即。字母和单词被分流,例如左边第一个字母 - 在原始文本中它在CNN的右边。
当我从MySQL剪切并粘贴到TextEdit时,它出来了吗?!
当我的字符串中有任何非阿拉伯字符(例如C N N“)时,我似乎只会遇到这个问题???
任何建议表示赞赏。
感谢。
答案 0 :(得分:1)
当我使用Python或MySQL来检索该字符串时,它出现为: محمودالسقالCNN:النظاميؤدبثورةيناير
因为浏览器(或者它正在绘制的字母)正在使用LTR方向
当我从MySQL剪切并粘贴到TextEdit时,它出来了吗?!
因为你的TextEdit正在使用RTL方向
<小时/> 当您将同一文本中的阿拉伯语RTL语言与英语等LTR语言结合使用时,您需要根据文本中每种语言的单词数量来决定您将使用哪种上下文,以及是为了防止人类读者混淆。
示例1 强>
“أحبمنالإنجليزيةكلمة”SUN“وهيتعنيالشمس”(LTR)
示例-2 强>
“来自阿拉伯语我喜欢”شمس“这个词意思是太阳”(LTR)
<小时/> 使用LTR方向显示example-1会导致单词像您给出的示例一样被分流,因为阿拉伯语的数量太多了。并且使用RTL方向显示example-2也会这样做,因为英语的数量太多了。从技术上讲,浏览器没有做错任何事,他只是根据他使用的文字方向依次画出他在字符串中遇到的字母,只会让人类的读者感到困惑。
<小时/> 让我们回过头来分析你的例子中发生的事情“محمودالسقالCNN:النظاميؤدبثورةيناير”。
当您使用浏览器显示字符串时,浏览器正在使用LTR上下文,所以这就是:
1 - 浏览器开始绘制他遇到的字符“محمودالسقال”。从左到右。这第一部分全都是阿拉伯语,到目前为止一直很好。
2 - 现在浏览器遇到单词“CNN”他也从左到右绘制 - 浏览器不知道他正在绘制哪种语言,他只是使用上下文绘制字符选择了 -
现在字符串显示如下
“محمودالسقال”+“CNN”
3 - 浏览器遇到的最后一部分是“النظاميؤدبثورةيناير”,他也从左到右绘制它,没有任何意识到哪些字符是那些! ,现在显示的文字显示如下
“محمودالسقال”+“CNN”+“النظاميؤدبثورةيناير”
<小时/> 现在你的TextEdit发生的事情是他完全按照浏览器的方式做了,除了他正在使用RTL上下文,这将导致将相同的3个句子按照浏览器的相同顺序放置,但是从开始向右向左,这将导致正确的形式(从人类读者的角度来看)
<强>综述强> 当您在一个文本中组合多个方向语言时,请使用正确的上下文,这将为人类读者提供更好的视图
<小时/> 这就是你在注释++中改变方向的方法
<强> LTR 强>
<强> RTL 强>