mysql亂碼終極解決方案
最近在linux自帶的mysql資料庫中執行了乙個sql檔案,在資料庫中查詢沒有任何問題,可以看到中文資料,但是在jsp頁面中顯示時卻出現了亂碼,在spring的配置資料庫的連線url中,指定了編碼「characterencoding=utf-8」,而且瀏覽器也是utf-8的編碼,為什麼就會是亂碼呢。最後得出結論,原來是linux自帶的資料庫並不是utf-8的編碼,整理後,得到以下幾種解決方案:
第一解決方法:
亂碼問題簡單說就是資料庫寫入讀取,網頁檔案,網頁顯示時幾個環節的編碼不一致造成的。
www.2cto.com
亂碼問題
寫入時:頁面提取寫入資料編碼和寫入資料庫時編碼不一致
讀取時:讀取後所用編碼與資料庫寫入時不一致
顯示時:編碼與資料庫讀取後的資料不一致
很顯然只有三者都統一才行:(以utf-8為例)
1:頁面提交資料編碼utf-8(這也可以算是顯示頁面編碼),
2:資料庫寫入時編碼:alter database db default character set 『utf8』collate 『utf8-general-ci』,
3:資料庫讀取時所用編碼:mysql_query(「set names 『utf8』」);
4:顯示頁面編碼:
第二解決方法:
進入mysql命令列:
mysql> alter database you_dbname default character set 'utf8';
mysql> set character_set_client='utf8';
mysql> set character_set_connection='utf8'
mysql> set character_set_results='utf8'
第三解決方法:
(暫時只針對mysql 5.0.16 亂碼問題處理辦法,其他版本未測試。)
1 設定phpmyadmin
www.2cto.com
language:chinese simplified (zh-utf-8)
mysql 字符集:utf-8 unicode (utf8)
mysql 連線校對:gbk_chinese_ci
2 建立資料庫時
整理設定成 gbk_chinese_ci
3 用sql建立表中
engine=myisam default charset=gbk;
engine=innodb default charset=gbk auto_increment=40 ;
www.2cto.com
4 檢查表結構中
varchar(100) 的整理屬性為gbk_chinese_ci
其它型別的整理屬性為空
5 **中加上
$db->query("set character set gbk"); linux下需要,windows下不需要
這個相當於connection character sets and collations
MySQL亂碼終極解決方案
從mysql 4.1開始引入的多語言支援確實很棒,而且一些特性已經超過了其他的資料庫系統。不過在測試過程中發現使用適用於mysql 4.1之前的php語句操作mysql資料庫會造成亂碼,即使是設定過了表字符集也是如此。mysql 4.1的字符集支援 character set support 有兩個...
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 ...