2

'utf8_general_ci'の照合を含むMySQLデータベーステーブルがあり、フィールドの値は次のとおりです。

xī bányáwén(スペースなし)。

これを変換すると(たとえば、StackOverflowのエディターによって)、次のようになります。

xībányáwén

ここで、2番目の文字は小文字のiのように見え、上部にバーがあります。

PHPでは、どの関数がīを変換しますか。ī文字にエンティティ?

html_entity_decode($ str、ENT_COMPAT、'UTF-8')を使用してみましたが、次のような文字が表示されます。

yÄ«nwénまたはzhÅ•ngwén

デコードについて理解できないことがあると確信しているので、間違った関数を使用しています。エンティティ&#299および255を超える同様の多数の文字で表される単一文字のグリフを取得する方法に光を当てることができますか?

どうもありがとう、AE

4

2 に答える 2

1

UTF-8はマルチバイトエンコーディングです。そのため、Latin-1などのシングルバイトエンコーディングで見ると、表示されている結果とよく似たものが表示されます。ドキュメントのエンコーディングをUTF-8に設定して、実際の文字を確認します。

最初の質問ですが、実際には、PHPではなく、文字参照をデコードして文字を印刷するのはブラウザーです。

于 2010-04-22T04:03:14.980 に答える
0

このページを読むことをお勧めします:働く PHP プログラマーのための Unicode。長くはありませんが、こぶを乗り越えて、自信を持って Unicode と UTF-8 を理解できるようになるはずです。

問題がなければ、非常に便利なmbstringおよびintl PHP 拡張機能を調べてください。また、マルチバイト文字列で安全に使用できる PHP の文字列関数とそうでない文字列関数を理解します。これは、いたずらな文字列関数のリストを含む UTF-8 にサイトを移行したときに作成したメモです。

于 2010-04-23T13:50:41.603 に答える