萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL5 數據庫中文亂碼問題的解決方法

MySQL5 數據庫中文亂碼問題的解決方法

中文亂碼我們可以從多個方面來進行解決了,下面小編來為各位總結一下關於MySQL5 數據庫中文亂碼問題的解決方法,希望下文對各位有幫助.

 

 由於Mysql是從版本 4遷移到Version 5的,原來的字符集是latin1,現在是UTF8,這就遇到了經典的亂碼問題,即使通過phpadmin來訪問,也是一片紛亂,還好在前端的展現正常。

在網上搜一下,很多帖子和方法,最後我通過如下步驟,終於糾正了多年來的亂碼問題。

首先亂碼是由於字符集的變化和混亂造成的。

[root@localhost plugins]# /mysql -hlocalhost -ueygle -p eygle
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1693469
Server version: 5.0.45 Source distribution
type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.
mysql> show variables like ’%char%’;
+————————–+———————————-+
| Variable_name            | Value                            |
+————————–+———————————-+
| character_set_client     | latin1                           |
| character_set_connection | latin1                           |
| character_set_database   | latin1                           |
| character_set_filesystem | binary                           |
| character_set_results    | latin1                           |
| character_set_server     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /opt/mysql/share/mysql/charsets/ |
+————————–+———————————-+
8 rows in set (0.00 sec)

現在的字符集是utf8,但是由於原來是latin1的字符集,我使用latin1進行導出:

mysqldump -hlocalhost -ueygle -p –default-character-set=latin1 blog >blog.sql

這樣導出之後,如果打開看,正文應當都是正常顯示才對,然後更改字符集,將所有表的字符集設置改為utf8,在vim中的命令是:

:%s/latin1/utf8/g

再執行導入操作:

mysql -hlocalhost -ueygle -p eyglenew < blog.sql

這樣我終於看到了久違的,正確的中文,現在的數據庫字符集看起來是這個樣子的:

mysql> show variables like ’%char%’;
+————————–+———————————-+
| Variable_name            | Value                            |
+————————–+———————————-+
| character_set_client     | latin1                           |
| character_set_connection | latin1                           |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | latin1                           |
| character_set_server     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /opt/mysql/share/mysql/charsets/ |
+————————–+———————————-+
8 rows in set (0.00 sec)

記錄一下,供遇到此類情況的朋友參考。

如果是數據庫沒有亂碼而程序查詢是亂碼了,我們可以如下來解決

只好查資料,發現了一個解決方法,就是在mysql_connect後面加一句SET NAMES UTF8,即可使得UTF8的數據庫消除亂碼,對於GBK的數據庫則使用SET NAMES GBK,代碼如下:

$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES 'GBK'");
 

數據庫字符集為utf-8

連接語句用這個

mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET UTF8");
mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");

還有個方法就是,如果你自己的機器的話,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5這兩個版本中有效

copyright © 萬盛學電腦網 all rights reserved