mysql 支持幾十種編碼方式,並且默認的編碼latinl對中文支持不太好,gb2312是針對中午的編碼方式,每個漢字佔2個字節,解析比較簡單,但是僅能編碼 中文字符,中文網站往往採用gb2312,,如baidu,gbk類似於gb2312,但是比gb2312編碼更多的中文以及中文字符,uft-8能夠編碼目前爲止任意的語言,國際化的網站採用utf-8
1從控制檯修改編碼
mysql->alter database nj character set utf8;
查看當前數據庫編碼的方式斷的命令:show variables like 'character_set_database';
2從配置文件修改編碼
用記事本打開mysql目錄下的my.ini文件(c:\program files\mysql\mysql server 5.0\my.ini)找到下面一句話:
default-character-set=latinl
應該有這行代碼,將編碼方式latinl都改爲utf8即可
3url中指定編碼方式
另外,還需要指定jdbc連接的編碼方式,方法是修改鏈接url
Connection conn=DriverManager.getConnerction("jdbc:mysql://localhost:3306/nj?unicode=true&characterEncoding=utf-8",'root','admin');
做完上述設定之後,一般就沒有亂碼了,如果還有亂碼,檢查是否對request進行了編碼,如果沒有,從request取到的字符串也會亂碼,注意jsp頁面編碼,
request編碼,response編碼,數據庫編碼必須一致
Tomcat的server.xml中也要修改,爲get方式獲取數據添加urlEncoding參數,指定utf-8編碼,默認爲ISO-8859-1
<Connector port="8080" protocol="http/1.1"
connectionTimeout="20000"
redirectPort="8443" urlEncoding="utf-8"/>