MySQL數據亂碼的解決方法

第一解決方法:

亂碼問題簡單說就是數據庫寫入讀取,網頁文件,網頁顯示時幾個環節的編碼不一致造成的。

亂碼問題
寫入時:頁面提取寫入數據編碼和寫入數據庫時編碼不一致
讀取時:讀取後所用編碼與數據庫寫入時不一致
顯示時:編碼與數據庫讀取後的數據不一致

很顯然只有三者都統一纔行:(以utf-8爲例)
1:頁面提交數據編碼utf-8(這也可以算是顯示頁面編碼),
2:數據庫寫入時編碼:alter database db default character set ‘utf8’collate ‘utf8-general-ci’,
3:數據庫讀取時所用編碼:mysql_query(“set names ‘utf8’”);
4:顯示頁面編碼:<meta http-equiv="Content-type"content=“text/html, charset=utf-8”>

 
第二解決方法:

進入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'



/etc/my.cnf中 mysqld下,mysqldump上添加如下一行




-----------------------------------------------------------------------------------

#innodb_lock_wait_timeout = 50


character_set_server=utf8
collation_server=utf8_general_ci


[mysqldump]
quick


-----------------------------------------------------------------------------------


第三解決方法:

(暫時只針對MySQL 5.0.16 亂碼問題處理辦法,其他版本未測試。)
1 設置phpMyAdmin

  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 ;

4 檢查表結構中

  varchar(100) 的整理屬性爲gbk_chinese_ci
  其它類型的整理屬性爲空

5 代碼中加上

  $db->query("SET CHARACTER SET GBK");  Linux下需要,Windows下不需要
  這個相當於Connection Character Sets and Collations
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章