同一个MySQL专栏中的阿拉伯语和英语混在一起

时间:2016-11-07 15:37:09

标签: php python mysql arabic

我在OS10.10.5的Macbook上使用PHP,Python和MySQL。 我在MySQL中存储了以下句子:

enter image description here

然而,当我使用Python或MySQL来检索该字符串时,它出现为:

محمودالسقالCNN:النظاميؤدبثورةيناير

即。字母和单词被分流,例如左边第一个字母 - 在原始文本中它在CNN的右边。

当我从MySQL剪切并粘贴到TextEdit时,它出来了吗?!

当我的字符串中有任何非阿拉伯字符(例如C N N“)时,我似乎只会遇到这个问题???

任何建议表示赞赏。

感谢。

1 个答案:

答案 0 :(得分:1)

  

当我使用Python或MySQL来检索该字符串时,它出现为:   محمودالسقالCNN:النظاميؤدبثورةيناير

因为浏览器(或者它正在绘制的字母)正在使用LTR方向

  

当我从MySQL剪切并粘贴到TextEdit时,它出来了吗?!

因为你的TextEdit正在使用RTL方向

<小时/> 当您将同一文本中的阿拉伯语RTL语言与英语等LTR语言结合使用时,您需要根据文本中每种语言的单词数量来决定您将使用哪种上下文,以及是为了防止人类读者混淆。

示例1

enter image description here(RTL)

“أحبمنالإنجليزيةكلمة”SUN“وهيتعنيالشمس”(LTR)

示例-2

“来自阿拉伯语我喜欢”شمس“这个词意思是太阳”(LTR)

enter image description here(RTL)

<小时/> 使用LTR方向显示example-1会导致单词像您给出的示例一样被分流,因为阿拉伯语的数量太多了。并且使用RTL方向显示example-2也会这样做,因为英语的数量太多了。

从技术上讲,浏览器没有做错任何事,他只是根据他使用的文字方向依次画出他在字符串中遇到的字母,只会让人类的读者感到困惑。

<小时/> 让我们回过头来分析你的例子中发生的事情“محمودالسقالCNN:النظاميؤدبثورةيناير”。

当您使用浏览器显示字符串时,浏览器正在使用LTR上下文,所以这就是:

1 - 浏览器开始绘制他遇到的字符“محمودالسقال”。从左到右。这第一部分全都是阿拉伯语,到目前为止一直很好。

2 - 现在浏览器遇到单词“CNN”他也从左到右绘制 - 浏览器不知道他正在绘制哪种语言,他只是使用上下文绘制字符选择了 -

现在字符串显示如下

  

“محمودالسقال”+“CNN”

3 - 浏览器遇到的最后一部分是“النظاميؤدبثورةيناير”,他也从左到右绘制它,没有任何意识到哪些字符是那些! ,现在显示的文字显示如下

  

“محمودالسقال”+“CNN”+“النظاميؤدبثورةيناير”

<小时/> 现在你的TextEdit发生的事情是他完全按照浏览器的方式做了,除了他正在使用RTL上下文,这将导致将相同的3个句子按照浏览器的相同顺序放置,但是从开始向右向左,这将导致正确的形式(从人类读者的角度来看

<强>综述 当您在一个文本中组合多个方向语言时,请使用正确的上下文,这将为人类读者提供更好的视图

<小时/> 这就是你在注释++中改变方向的方法

  

<强> LTR

enter image description here

enter image description here

  

<强> RTL

enter image description here

enter image description here