あなたのファイルのエンコーディングは何ですか?それもUTF8である必要があります。httpサーバーのデフォルトの文字セットは何ですか?UTF-8でもあるはずです。
エンコーディングは、次の場合にのみ機能します。
- ファイルは正しくエンコードされています
- サーバーは、配信されたファイルのエンコーディングを通知します。
データベースを操作するときは、DBフィールドに適切なエンコーディングを設定し、MySQLクライアントがサーバーと通信する方法も設定する必要があります(を参照mysql_set_charset()
)。MySQLクライアント(この場合はPHP)はデフォルトでISOに設定され、データを再解釈する可能性があるため、フィールドだけでは不十分です。したがって、UTF8DB->ISOクライアント->UTF8PHPスクリプトに挿入されます。なぜそれが最後に台無しになっているのも不思議ではありません:-)
適切な文字セットでファイルを提供する方法は?
header('Content-type: text/html; charset=utf-8')
1つの解決策です
を含む.htaccessファイルAddDefaultCharset UTF-8
は別のものです
HTMLメタコンテンツタイプも機能する可能性がありますが、HTTPヘッダーを使用してこの情報を送信することをお勧めします。
PS:UTF8では文字列が実際の長さよりも多く報告する可能性がmb_strlen()
あるため、使用する必要もあります。strlen()