1. 程式人生 > >(MySql的亂碼解決)關於相同sql指令在eclipse中查詢不到結果,在mysql中卻能查詢到結果,以及增加資料時列表顯示“?”解決方案

(MySql的亂碼解決)關於相同sql指令在eclipse中查詢不到結果,在mysql中卻能查詢到結果,以及增加資料時列表顯示“?”解決方案

在最初使用jdbc連線資料庫時,大家一定經常遇到一下兩個問題:

1、相同sql指令在eclipse中查詢不到結果,在mysql中卻能查詢到正確結果。

2、在增加列表資料時,雖然能夠增加成功,但增加的資料中文全部變成了“?”

下面將為大家解決這兩個問題。

這兩個問題其實都是編碼不同導致中文亂碼搞的鬼,比如同樣的指令:SELECT * FROM tb_person WHERE name='張無忌',‘張無忌’將會因為eclipse編碼不同導致變為亂碼,從而mysql無法查詢到這個亂碼,所以結果為空,所以我們只需修改編碼即可解決這個問題。同樣的道理,第二個問題也是將中文變為了亂碼。

不止如此,還有許許多多的問題其實都是亂碼導致的。

下面是MySql的亂碼解決方案。

1、建立資料庫時指定編碼方式

CREATE DATABASE 資料庫名 CHARACTER SET utf8

2、從配置檔案修改編碼

用記事本開啟MySql目錄下的my.ini檔案,找到下面一句話:

default-character-set=latin1

應該有兩行這樣的程式碼,將編碼方式latin1都修改為utf8即可,注意這隻會影響以後建立的資料庫、表,之前建立的不影響。

3、URL中指定編碼方式

在JDBC連線時指定編碼方式

DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/資料庫名?useUnicode=true&characterEncoding=UTF-8","資料庫賬號","資料庫密碼");

Tomcat的server.xml中也要修改

<Connector port="8080" protocol="HTTP/1.1"
         connectionTimeout="20000"
         redirectPort="8443" URIEncoding="UTF-8"/>

做完上述設定後一般就沒有亂碼了,如果依然還有亂碼,請檢查是否對request進行了編碼。注意JSP頁面、request編碼、response編碼、資料庫編碼必須一致。