從mysql 4.1開始引入的多語言支援確實很棒,而且一些特性已經超過了其他的資料庫系統。不過在測試過程中發現使用適用於mysql 4.1之前的php語句操作mysql資料庫會造成亂碼,即使是設定過了表字符集也是如此。
mysql 4.1的字符集支援(character set support)有兩個方面:字符集(character set)和排序方式(collation)。對於字符集的支援細化到四個層次: 伺服器(server),資料庫(database),資料表(table)和連線(connection)。
當我們按照原來的方式通過php訪問mysql資料庫時,就算設定了表的預設字符集為utf8並且通過utf-8編碼傳送查詢,你會發現存入資料庫的仍然是亂碼。
其實簡單的方法是通過phpmyadmin來設定。
設定下面幾項:
語言設定為 chinese (zh
-utf-8
)mysql 字符集
: utf
-8 unicode
(utf8
)mysql 連線校對
: utf8_general_ci
新增資料庫和資料表的時候,整理項選擇 utf8_general_ci
通過以上設定,在phpmyadmin中操作和查詢的時候,中文字元都不會亂碼了。
但是你會發現,在php程式中用以前的sql語句查詢出來的結果還是亂碼,問題就出在connection連線層上。
解決方法是在成功連線資料庫之後,傳送一句查詢語句:
$this
->
linkid
= @mysql_connect
($this
->
host
, $this
->
user
, $this
->
password
);@mysql_query
('set names '
utf8
'',
$this
->
linkid);
Mysql亂碼終極解決方案
mysql亂碼終極解決方案 最近在linux自帶的mysql資料庫中執行了乙個sql檔案,在資料庫中查詢沒有任何問題,可以看到中文資料,但是在jsp頁面中顯示時卻出現了亂碼,在spring的配置資料庫的連線url中,指定了編碼 characterencoding utf 8 而且瀏覽器也是utf 8...
MySql亂碼的終極解決方案
伴隨著無數次重灌mysql,並且花費一整天的時間後,終於使得mysql不再亂碼。我的mysql安裝時候,選擇的編碼為 best 即支援utf 8的編碼。在mysql中執行status,也顯示所有的編碼為utf8。1.如果在資料庫中,使用command line直接插入中文資料,報錯,提示 data ...
PHP MySQL亂碼終極解決方案
1.html頁面有 meta 設定為 utf 8 頁面存為utf 8編碼 2.php頁面有 header 設定為utf 8,頁面存為utf 8編碼 header content type text html charset utf 8 3.資料庫操作之前 mysql query set names ...