Mysql亂碼終極解決方案

2021-12-29 20:16:41 字數 1518 閱讀 4724

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 ...