mysql插入中文數據變成問號的解決方案

mysql插入中文數據變成問號

寫在前面

也許在看這篇文章的你因為這個事情煩惱,網上說的都是什麼修改my.ini文件,可是當你發現你的服務器安裝的mysql沒有這個配置文件豈不是特別的腎疼。

疼就對瞭,按照我的方法一步步保障你能夠配置成功,不然你們打的我*疼。 

第一步:首先檢驗一下你自己的代碼基本配置

1.Jdbc.properties數據庫配置文件後面是不是加瞭characterEncoding=utf-8,如下圖所示:

發現沒有的話別傻看著,趕緊加起來

2.web.xml有沒有配置編碼過濾器,就像是這種

沒有的話你自己看著辦,嘿嘿,為瞭方便你們復制在下面寫一下(是不是很貼心)

<!-- 配置編碼過濾器 -->
	<filter>
		<filter-name>characterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
		</init-param>
	</filter>

第二步:當你發現上面兩個文件都沒有問題的話,我們就來看看這個配置文件啦.

1.看數據庫編碼格式

先登錄服務器,進到你的數據庫,登錄數據庫命令(下面的數據庫名指的是你創建的數據庫名稱,比如說test):

mysql -u root -p 數據庫名

然後執行下面的命令查看你數據庫的編碼格式

show variables like ‘char%’;

就是這個latin1在作怪,那麼這個問題怎麼解決呢?不要心急往下看.

2.修改mysql內部配置文件

先聲明一下,最新下載的官網mysql安裝包貌似都是沒有my.ini文件,但是一定有my.cnf文件,這個時候你就應該去你服務器看下在哪,當然一般都在根目錄下的etc/下面。

找到的話你就可以繼續往下看,沒找到的自己反省(給我留言,我幫你找)

命令行:vim my.cnf

【核心】執行i命令進入編輯模式,在[mysqlid]下面新增下面一句話,也就是漢字編碼格式兼容

character-set-server=utf8

:wq命令保存並退出。

3.重啟mysql大功告成

我的是在根目錄的bin下面執行這兩個實現停啟

systemctl stop mysqld.service
systemctl start mysqld.service

 

然後你可以很自豪的登錄mysql,執行上面這個命令查看你數據庫的編碼格式

show variables like ‘char%';

是不是很驚喜很意外,哈哈哈哈。

最終經過不泄的努力,總算是把這個中文數據錄入進去瞭,哈哈哈哈,真服自己,都想給自己轉個錢啥的,問號什麼的可以滾一邊去瞭。

問題解決

存入mysql的漢字變成問號

項目場景

mySql 5.7

java

配置文件:spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/XXX?useSSL=false

插入操作:

@Insert("INSERT INTO foods(food_name,food_taste,food_price,food_description) VALUES (#{foodName},#{foodTaste},#{foodPrice},#{foodDescription})")
	int insert(Food food);

問題描述

存入數據庫後漢字變成????

原因分析:

連接數據庫的設置需要制定字符集

解決方案

解決方法:數據源裡面增加 useUnicode=true&characterEncoding=UTF-8

spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=UTF-8&useSSL=false

wenti

總結

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: