2012-04-25 87 views
0

我有一個php文件,它使用pdo將數據插入到MySQL數據庫中。當我嘗試插入一個田字référencé我的表中的一個,它顯示在mysql中像référencé
爲我指定了一個小無處不字符集爲UTF-8我不明白這一點。見下文。PHP MySQL - 不考慮字符集

  1. 我的表設置爲InnoDB的UTF-8
  2. 我字段設置爲utf8_general_ci
  3. 在我的PHP腳本的頂部,我把
    一個。 header('Content-Type: text/html; charset=utf-8');
    b。 mysql_set_charset('utf8');
    c。 mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

這裏我下面的PDO Connexion的功能:

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); 
} 

希望有人能幫助我理解。先謝謝你。乾杯。馬克

+0

這看起來不像PDO。你在使用PDO還是mysql_ *? – deceze 2012-04-25 10:46:36

+0

嘗試在MySQL中執行「SET NAMES UTF8」查詢。你怎麼顯示數據?它可能被妥善保存,但編碼可能會在你顯示它的地方制動。 – ddinchev 2012-04-25 10:46:45

+0

你好,死。我從mysql_切換到pdo ... – Marc 2012-04-25 10:48:44

回答

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 2012-04-25 10:59:30