2012-04-02 8 views
0

PHPでクエリを実行するためにPDOを使用しています。問題は、phpMyAdminでアクセント記号( "é"、 "è"、 "ô"など)を含む文字を追加し、それをPHPで取得するときに、奇妙な文字を表示することです。アクセントがクエリを介して追加されると、奇妙な文字( 'é'は 'é')として格納されますが、正しく表示されます。アクセント "é、è... etc"が正しく表示されない

私がMySQLで使用する文字セットはutf8_general_ciです。 PHPのcharsetがUTF-8(BOMなし)に設定されています。私はのようなクエリを実行する場合:

SELECT ... WHERE DataName LIKE '%é%' ... 

データはphpMyAdminを経て追加され、「A©」に設定されていない場合、それは動作しません。

phpMyAdminでデータを追加してphpMyAdminに「é」と表示してもこの作業を行う方法を知りたいです。

+0

あなたのウェブサーバが彼のHTTPヘッダに戻っているエンコーディングは何:
2-が正しいアクセント
3 - は、HTMLヘッダーの定期的な宣言を使用した入力にバッチファイルをチェック? –

+0

また、 'utf8_decode()'/'utf_encode()'で遊んでみましたか? –

+0

ヘッダーのエンコーディングはわかりませんが、HTMLページは(メタの)UTF-8に設定されています。しかし、私は(私のPHPスクリプトでは、サーバー上で、ヘッダーはユーザーに送信されません)クエリを実行しても、問題は同じです。私はそれを動作させるために 'É'と 'E'を比較しなければならない。だから私は問題がヘッダーに関連しているとは思っていません(またはヘッダーにのみ関連しています)。 – maniak

答えて

0

は、私は同じ問題を抱えていたあなたはPDOとMySQL

$handle = new PDO("mysql:host=localhost;dbname=dbname", 
    'username', 'password', 
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 
+0

エラーが表示されます:未定義のクラス定数 'MYSQL_ATTR_INIT_COMMAND'。私はすでにこれを調べており、解決策は 'dbname'の後に '; charset = UTF-8'を設定することでした。しかし、文字セット= UTF-8でも私の問題は解決されませんでした。 – maniak

0

間のすべての通信のためにUTF8を確立することを確認してください。私のバッチファイルはアクセント記号でテーブルを初期化しましたが、phpmyadminは奇妙な数字を示しました。しかし、私はphpmyadminでそれを変更したとき、正しく保存され、バッチにエクスポートしたときも正しい(奇妙な図をロードしたのと同じバッチ) メモ帳ではなくJeditエディタを使用したときの問題が気に入っています。何らかの理由で、メモ帳が変な図形をアクセントに変換します。 その問題を知ることは簡単でした:
1- latin1を使用してデータベースによって作成されました:
DROP DATABASE IF EXISTS mydb;
データベースの作成mydbデフォルト文字セットlatin1 COLLATE latin1_swedish_ci; METAのcharset =「UTF-8」

関連する問題