私たちは1991年からUnicodeを使用しているので、そのような問題がまだ私たちの仕事を妨げているのはかなり残念です。残念ながら、i18nのデフォルトはすべて間違っていることがあるため、自分で行う必要があります...
HTTPに関する限り、あなたは正しいことをしましたが、MySQL接続のために正しいことをしなければなりません...
これを試して:
$result = mysql_query("SET NAMES utf8; SET CHARACTER SET utf8;");
$cmd = "select * from yourtable";
$result = mysql_query($cmd); //all should data should arrive correctly encoded
各接続でこれを行う必要がないように、.cnfファイルを変更できます。次のSOの質問に対する受け入れられた回答をご覧ください。my.cnfでMySQLのデフォルトの文字セットをUTF-8に変更しますか?
更新:問題は確かにSQL接続文字列にあったことが判明しました。ただし、ApacheではAddDefaultCharsetも問題を引き起こす可能性があるため、回答のこの部分は残しておきます。
AddDefaultCharsetは、それが何をするのか理解していないと厄介です!設定されている場合、Apacheはtext/htmlおよびtext/plainコンテンツタイプの応答の文字セットを設定します。これは事実上、あなたが無視されることを意味します。Sacxのコメントとしてutf-8に設定するか、オフに設定します。(ちなみに、特定の文字セットではなく「on」に設定されている場合、これは「iso-8859-1」に設定されている場合と同じになり、そのような状況のデバッグが非常に困難になります!)詳細:
http://httpd.apache.org/docs/2.2/mod/core.html
参照:
MySQLでUTF-8を適切に処理する方法