Php utf8中的简单比较,结果是否错误?

Php utf8中的简单比较,结果是否错误?,php,encoding,utf-8,Php,Encoding,Utf 8,此代码打印“否”,但它应该打印“ok”,并且两个的utf8编码不同 $a="کیهان"; $b="كيهان"; echo utf8_encode($a)."==".utf8_encode($b)."<br>"; if(utf8_encode($a)==utf8_encode($b)) echo "ok"; else echo "no"; 那是什么 编辑:复制$a并键入$b 关于弦为什么不相等,比利完全正确。这个答案可以解释为什么在转换后会看到垃圾文本 我猜您的原

此代码打印“否”,但它应该打印“ok”,并且两个的utf8编码不同

$a="کیهان";
$b="كيهان";
echo utf8_encode($a)."==".utf8_encode($b)."<br>";
if(utf8_encode($a)==utf8_encode($b))
    echo "ok";
else
    echo "no";
那是什么

编辑:复制$a并键入$b

关于弦为什么不相等,比利完全正确。这个答案可以解释为什么在转换后会看到垃圾文本

我猜您的原始编码不是ISO-8859-1

请参阅中的第一条注释

请注意,utf8_encode仅转换中编码的字符串 ISO-8859-1至UTF-8。更合适的名称是 “iso88591至utf8”。如果您的文本未在ISO-8859-1中编码,则可以 不需要这个功能。如果您的文本已在UTF-8中,则不需要 我们需要这个功能事实上,将此函数应用于 如果没有在ISO-8859-1中编码,则很可能只是将该文本弄乱。


您可能需要这样做。

您的unicode字符串的开头不同。。。此处显示了用于点光源的空格:

$a="ک ی ه ن";
$b="ك ي ه ن";

编辑:出于好奇


它们似乎在文件顶部的选项卡中显示相同,该选项卡必须具有将字符组合在一起的字体功能,但在代码体中的显示方式不同,代码体实际上是前后显示的。

您是如何看到的?这也是我的第一个想法,但在我的浏览器中,至少字符串在视觉上看起来是相同的。我的vi风格(不使用从右到左的语言)非常清楚地显示了这一点。我将其粘贴到sublime edit 2中,在那里它看起来略有不同
$a="ک ی ه ن";
$b="ك ي ه ن";