我這篇是要記錄MySQL的編碼設定,通常很多人都知道要設定Server及Client的編碼,但都忘了資料庫在做Conncetion的時候,也要設定連線時的編碼。設定的程式碼如下:
$link = mysql_connect($localhost", $user, $passwd);
mysql_query("SET NAMES 'utf8'");
mysql_select_db($dbname, $link);
$result = mysql_query("SELECT * FROM $table");
while ($row = mysql_fetch_assoc($result)) {
var_dump($row);
}
如果是使用PDO的方式,連線的範例如下:
try {上面程式即可正確顯示UTF8的結果。
$dbh = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$dbh->exec('SET CHARACTER SET utf8');
foreach ($dbh->query("SELECT * from $table") as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() ;
die();
}
若是覺得很麻煩惱,不想在每次執行SQL的時候,都要加上SET NAMES 'utf8'的指令的話,也可以在my.cnf裡做設定如下:
[mysqld]上面的設定一次搞定,就不用每次下SQL之前都還要加一行UTF8的設定。不過這個方法我沒成功,只好改回第一個方法 >"< 操作環境為XAMPP,PHP版本:5.2.5、MySQL版本:5.0.51a
default-character-set=utf8
[client]
default-character-set=utf8
init_connect='SET NAMES utf8'
相關文章: