(MySql的亂碼解決)關於相同sql指令在eclipse中查詢不到結果,在mysql中卻能查詢到結果,以及增加資料時列表顯示“?”解決方案
阿新 • • 發佈:2018-12-08
在最初使用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編碼、資料庫編碼必須一致。