2012-04-25 9 views
0

私はpdoを使ってmysql dbにデータを挿入するphpファイルを持っています。私のテーブルの1つのフィールドにréférencéという単語を挿入しようとすると、mysqlのようにmysqlに表示されますréférencé
私は少しずつ文字セットをutf-8として指定しています。下記参照。PHP MySQL - Charsetは考慮されていません

  1. 私のテーブルはInnoDBのUTF-8私のフィールドは私のPHPスクリプトの先頭に
  2. をutf8_general_ciに設定されている
  3. に設定されている私は
    置きます。 header('Content-Type: text/html; charset=utf-8');
    b。 mysql_set_charset('utf8');
    c。私のPDOのコネクション機能以下ここmysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

function connexion($host, $user, $pass, $db){ 
    $db_host = $host; 
    $db_user = $user; 
    $db_password = $pass; 
    $db_database = $db;    
    return $connexion = new PDO("mysql:host=$db_host;dbname=$db_database", $db_user, $db_password); 
} 

ホープ誰かが私を理解するのに役立ちます。前もって感謝します。乾杯。 Marc

+0

これはPDOのようには見えません。あなたはPDOかmysql_ *を使っていますか? – deceze

+0

MySQLで "SET NAMES UTF8"クエリを実行してみてください。また、どのようにデータを表示しますか?正しくインスツルメンテーションされているかもしれませんが、エンコーディングが表示されているところでエンコーディングが停止する可能 – ddinchev

+0

ハローdecese。私はmysql_からpdoに切り替えました... – Marc

答えて

2

あなたのPDO接続の接続エンコードを設定していないようです。そうですね。

return new PDO("mysql:host=$db_host;dbname=$db_database", 
       $db_user, 
       $db_password, 
       array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); 

http://php.net/manual/en/ref.pdo-mysql.connection.phpを参照してください。

+0

ありがとうありがとう:) – Marc