2010-12-07 12 views
1

無論我試圖做什麼。如果我插入öäå或製作一個while循環,來自db的行,並且包含öäå,它看起來像是ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ。PHP PDO:chars不會顯示

它必須與PDO有關,因爲它與mysql_ *一起工作得很好。

雖然我曾在mysql_ *這些屬性:

# mysql_set_charset("utf8",$link); 
# mysql_query("SET NAMES 'UTF8'"); 

我在PDO連接看起來是這樣的:

$connect = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset:UTF-8", DB_USER, DB_PASS, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 

我怎樣才能解決這個問題?我相信我也需要某個地方的「集合名稱」,怎麼樣?

+0

可能相關:http://www.galengrover.com/web-development/setting-the-connection-charset-with -php-mysql/ – 2010-12-07 20:42:49

+0

謝謝,完美無缺。請將其作爲答案 – Karem 2010-12-07 20:54:10

回答

0

SET NAMES 'UTF8'聲明是正確的,但您必須每次都執行它。您可以指示PDO自動運行命令:

$dsn = sprintf('mysql:dbname=%s;host=%s', DB_NAME, DB_HOST); 
$driver_options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 
try { 
    $dbc = new pdo($dsn, $user, $pw, $driver_options); 
} 
catch (PDOException $e) { 
    // Handle exception 
} 

(通過Galen Grover

0

öäå是您在嘗試在設置爲非UTF解碼方案的視圖中顯示UTF-8時所看到的內容。要麼將UTF-8編碼的數據插入非UTF8數據庫,要麼將數據庫插入UTF8,但顯示結果的終端未設置爲UTF8。