これは本当に私のナットをやっています.....
関連するすべてのPHP出力スクリプトはヘッダーを設定します(この場合は1つのファイルのみ-メインのphpスクリプト):
header("Content-type: text/html; charset=utf-8");
HTMLメタは頭の中で設定されています:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
すべてのMysqlテーブルと関連する列は次のように設定されます。
utf8_unicode_ci Unicode (multilingual), case-insensitive
私はいくつかの翻訳を行うためにクラスを書いています..クラスがfopen、fputsなどを使用してファイルに書き込むと、すべてがうまく機能し、正しい文字が出力ファイルに表示されます(php配列として書き込まれ、ファイルシステムにとして保存されます)。 phpまたは.htmファイル。eval()は.htmファイルを正しく戻します。使用したいときに.phpファイルを含めるだけです。すべて問題ありません。
問題は、DBへの変換エントリを作成しようとしているときです。私のDB接続クラスには、最初の接続の直後に次の行が追加されています。
mysql_query("SET NAMES utf8, character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
正しい文字を表示する代わりに、DBで間違った文字セットを使用すると予想される通常のクラッドを取得します。例えば:
Propriétés
それ以外の:
propriétés
ロシア語、日本語などの文字を使い始めないでください。しかし、UTF8を使用しても、単一言語の文字セットが問題になることはありません...
私は何を逃しましたか?含まれている翻訳.phpまたは.htmファイルからの正しい文字がサイトに表示されるため、PHPではないことを私は知っています。これらの問題が発生しているのはMySQLDBを扱っているときだけです。PHPMyAdminは間違った文字でエントリを表示するので、PHPがMySQLに「書き込む」ときに発生すると思います。ここで同様の質問をスタックで確認しましたが、どの回答も(すべて処理されました)私に手がかりを与えません...
また、誰もがinclude $ filenameとeval(file_get_contents($ filename))を使用して速度の違いについて考えています。