java程式向mysql新增中文出現問號亂碼
問題描述:
當在java程式中輸入中文時,新增資料到mysql中,所有的文字都變成了問號(?)。如下圖:
java程式:
mysql資料庫:
解決思路:
查閱資料:
1、MySQL的預設編碼是Latin1,不支援中文,支援中文的資料庫編碼格式為gbk和utf8(注:在MySQL中要使用utf8,在java程式中使用utf-8,兩者指的都是utf-8)。
2、MyEclipse的編碼方式和MySQL的編碼方式不一致也會導致亂碼問題。
解決辦法:
設定MyEclipse的編碼方式:
本文主要介紹全域性編碼設定:工具欄中的Window-->Preferences-->MyEclipse-->Files and Editors-->JSP-->右側的Encoding將其修改為UTF-8格式即可,如圖:
設定MySQL的編碼方式:
1、檢視資料庫編碼方式命令:show variables like 'character%';
2、修改資料庫編碼方式:alter database test(資料庫名稱) character set utf8;
3、建立資料庫時,指定資料庫的編碼方式:createdatabase test(資料庫名稱) character set utf8;
4、執行檢視編碼方式的命令後,出現如圖所示資訊。
從以上資訊可知資料庫的編碼方式為latin1,其中,character_set_client為客戶端編碼方式;character_set_connection為建立連線使用的編碼方式;character_set_database為資料庫的編碼方式;character_set_results是結果集的編碼方式;character_set_server為資料庫伺服器的編碼方式。只要保證以上採用的編碼方式一樣,就不會出現亂碼問題。
5、修改配置檔案my.ini:
修改[client]下面的語句:default-character-set=utf8
修改[mysqld]下面的語句:character-set-server=utf8
6、重啟MySQL伺服器
開始-->執行-->輸入:services.msc,開啟“服務”,找到MySQL服務,右鍵重啟即可。
設定MySQL編碼方式就三步:1、用命令修改資料庫編碼,2、修改配置檔案,3、重啟服務。
完成修改後,檢視資料庫編碼方式,如圖:
大功告成!