Php 在同一个MySQL专栏中,阿拉伯语和英语混淆了

Php 在同一个MySQL专栏中,阿拉伯语和英语混淆了,php,python,mysql,arabic,Php,Python,Mysql,Arabic,我在Macbook和OS10.10.5上使用PHP、Python和MySQL。 我在MySQL中存储了以下句子: 但是,当我使用Python或MySQL检索该字符串时,结果是: CNN:美国有线电视新闻网 i、 e.字母和单词被分流,例如左手边的第一个字母-在原文中,它位于CNN的右侧 当我将MySQL剪切粘贴到TextEdit时,结果很好 我似乎只有当我的字符串中有任何非阿拉伯字符(例如CNN)时才会遇到这个问题 谢谢你的建议 谢谢 当我使用Python或MySQL检索该字符串时,结果如下:

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

但是,当我使用Python或MySQL检索该字符串时,结果是:

CNN:美国有线电视新闻网

i、 e.字母和单词被分流,例如左手边的第一个字母-在原文中,它位于CNN的右侧

当我将MySQL剪切粘贴到TextEdit时,结果很好

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

谢谢你的建议

谢谢

当我使用Python或MySQL检索该字符串时,结果如下: CNN:美国有线电视新闻网

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

当我将MySQL剪切粘贴到TextEdit时,结果很好

因为您的文本编辑正在使用RTL方向
当您将RTL语言(如阿拉伯语)与LTR语言(如英语)组合在同一文本中时,您需要根据文本中每种语言的字数来决定要使用的上下文,这是为了防止人类读者混淆

示例1

(RTL)

“太阳”(LTR)

示例2

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

(RTL)
使用LTR方向显示示例1会导致单词像您给出的示例一样被分流,因为阿拉伯语的数量太多。使用RTL方向显示示例2也会这样做,因为英语的数量太多

从技术上讲,浏览器没有做错任何事情,他只是根据所使用的文本方向,一个接一个地画出字符串中遇到的字母,只有人类读者会感到困惑


让我们回去分析一下你的例子中发生了什么“CNN:

使用浏览器显示字符串时,浏览器使用的是LTR上下文,因此发生了以下情况:

1-浏览器开始从左到右绘制他遇到的字符“محمودا㶍ل”。第一部分全部是阿拉伯语,目前为止还不错

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

现在字符串显示如下

“美国有线电视新闻网”

3-浏览器遇到的最后一部分是“从左到右”他也从左到右绘制,而不知道这些字符是什么!现在显示的文本是这样显示的

“CNN”+“CNN”+“CNN”


现在,您的文本编辑所发生的事情是,他完全按照浏览器所做的做了,只是他使用了RTL上下文,这将导致将句子的相同3个部分按与浏览器相同的顺序排列,但从右开始,从左开始,这将产生正确的形式(从人类读者的角度来看

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


这就是在Notes++中更改方向的方式。

LTR

RTL


这在某种程度上取决于你在什么环境下看到它。这可能是与RTL相关的问题。如果有正确的环境和发布,这可能不是问题。环境?我在网页和Mac终端上检查了它。看看这个:(css-
{direction:RTL;}