標籤:
MySql資料庫亂碼解決方案
解決亂碼問題一個原則:存取系統使用一致的編碼規則。
多使用mysql的原生命令列,這樣才能做更多的事情。
?
第一步:
確認應用系統需要使用的編碼
java的預設編碼是跟隨系統的,有的說是預設UNICode,在java中可以使用 String defaultCharsetName=Charset.defaultCharset().displayName();顯示編碼。
第二步:
確認並設定MySql的資料庫的編碼
1. 顯示編碼,簡單的方法命令是:status; 或者mysql> SHOW VARIABLES LIKE ‘character%‘;
mysql> status
--------------
C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysql.exe Ver 14.12 Distrib 5
.0.67, for Win32 (ia32)
Connection id: 3
Current database:
Current user: [email protected]
SSL: Not in use
Using delimiter: ;
Server version: 5.0.67-community-nt MySQL Community Edition (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 12 min 59 sec
Threads: 3 Questions: 32 Slow queries: 0 Opens: 32 Flush tables: 1 Open tab
les: 26 Queries per second avg: 0.041
--------------
2. 修改編碼
確保萬無一失必須所有的都設定成需要的字元,這裡我們以utf8為例子。
2.1 my.ini設定檔中的修改,(命令列中使用set設定的重啟服務後會失效),各個標籤下面的都需要修改:
C:\Program Files (x86)\MySQL\MySQL Server 5.0\my.ini
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
2.2 Server characterset是沒辦法在設定檔中修改的,但也不用重裝資料庫,只需要重新啟動配置程式MySQLInstanceConfig.exe就可以了。
C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\MySQLInstanceConfig.exe
在選擇編碼的地方選擇utf8就可以了,預設的是Latin1。選的二個或者第三個,第二個預設就是UTF8, 第三個手動選UTF8.
第三步:
重啟mysql服務
cmd下:
net stop mysql
net start mysql
mysql> use qba_db;
Database changed
mysql> status;
--------------
C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysql.exe Ver 14.12 Distrib 5
.0.67, for Win32 (ia32)
Connection id: 168
Current database: qba_db
Current user: [email protected]
SSL: Not in use
Using delimiter: ;
Server version: 5.0.67-community-nt MySQL Community Edition (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 20 days 11 hours 4 min 19 sec
Threads: 5 Questions: 3224 Slow queries: 0 Opens: 151 Flush tables: 1 Open
tables: 0 Queries per second avg: 0.002
--------------
MySql資料庫亂碼解決方案