2012-03-07 22 views
2

このコードを印刷 "いいえ"、それが "OK" 印刷する必要がありますと2のUTF8エンコードがutf8で簡単な比較、間違った結果ですか?

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

異なっており、その結果:

Ú©ÛÙاÙ==ÙÙÙا٠
no 

それは何©?

編集:$ aがコピーされ、$ bが入力され

答えて

4

あなたのUnicode文字列には、ポイントをHILIGHTすると...スペースでここに示さ開始する異なっていますscreen shot of text in sublime editor

tのタブに同じように表示されているようですフォントの機能を持たなければならないが、実際には正面に表示されるコードの本体に表示されるフォントの機能を持つ必要があります。

+0

どうやって見ましたか?それも私の最初の考えでしたが、私のブラウザでは少なくとも文字列は視覚的には同じです。 –

+0

私のブラウザでこれと同じです –

+0

右から左の言語を使っていないviの私の味は、これを非常にはっきりと示しています。 – thetaiko

1

EDIT:

ビリーの文字列が等しくない理由について(1)完全に右。この回答は、変換後にガベージテキストが表示される理由を説明します。

元のエンコーディングはISO-8859-1ではないと思います。

the docsの最初のコメントを参照してください。

はutf8_encodeのみUTF-8に ISO-8859-1でエンコードされた文字列を変換しますのでご注意ください。より適切な名前は "iso88591_to_utf8"です。テキストがISO-8859-1でエンコードされていない場合は、 にはこの機能は必要ありません。あなたのテキストが既にUTF-8であれば、 にこの機能が必要ではありません。 実際に、この関数をISO-8859-1でエンコードされていない のテキストに適用すると、そのテキストが単純に歪められます。

代わりにiconvが必要な場合があります。

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

EDIT:好奇心のために...