編集:オリジナルの投稿からフィードバックを得た後、問題を明確にするためにテキストを変更しました。PHP/MySQLのエンコーディングの問題
Iは、次のクエリ(擬似コード)を有する:
$conn = mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_query("SET NAMES 'utf8'; COLLATE='utf8_danish_ci';");
mysql_query("SELECT id FROM myTable WHERE name = 'Fióre`s måløye'", $conn);
これが0行を返します。私はphpMyAdminを直接クエリを実行すると、私は結果を取得し、
255 Connect [email protected] on
255 Query SET NAMES 'utf8'; COLLATE='utf8_danish_ci'
255 Init DB norwegianfashion
255 Query SELECT id FROM myTable WHERE name = 'Fióre`s måløye'
255 Quit
- :私のログファイルに
は、私はこれを参照してください。
- 表のエンコード:UTF-8
- HTMLページのエンコーディング:UTF-8
- 私は(フォーム入力からの)レコードを追加することができます名前が(例えば "Fióre`sHäßelberg")のアクセントを使用しています
- 私は読むことができますアクセントを持つレコード使って - > DBの「名LIKE 『$のラベル名の%』」
- 情報は私は名前がアクセント文字が含まれている任意の行を選択することができない理由見当もつかない
正常に見えます。
私は本当に誰かが私を助けることができると思います。
更新1: 私は妥協に至りました。私は、データを格納するときにhtmlentitiesでアクセントを変換し、DBからデータを取得するときにはhtml_entity_decodeを変換します。それはうまくいくようです。
私が今見た唯一の欠点は、phpMySQLを使って平文で名前を読むことができないことです。
スクリプトにあるように、関数呼び出しをポストすることはできますか?そして、あなたは$ sqlを出力して、それがどのように見えるのかを見ることができますか? –
完了。出力されたSQLをPHPMyADminで直接使用すると、正常に動作します。私は私が望む結果を得る。 – Steven
上記のクエリを宣言するPHPファイルでは、どのようなエンコーディングを使用しますか?競合を起こさないためにUTF-8も使用する必要があります。 – Gumbo