springboot亂碼問題排查思路解析
引言
我們?cè)谑褂胹pringboot項(xiàng)目開發(fā)過程中,會(huì)遇到中文保存到數(shù)據(jù)庫后出現(xiàn)亂碼的問題,這里以mysql為例介紹幾個(gè)排查思路
1. mysql的數(shù)據(jù)庫表的字符編碼格式不是utf-8導(dǎo)致
可以通過以下的語句來查看數(shù)據(jù)庫表的創(chuàng)建語句
show?create?table?tableName;

如果不是UTF-8的,修改表的默認(rèn)字符集和所有列的字符集語句
ALTER?TABLE?table_name?CONVERT?TO?CHARACTER?SET?UTF-8
2. 服務(wù)器端編碼格式錯(cuò)誤,導(dǎo)致存到mysql也是亂碼
這個(gè)可以通過debug的模式來斷點(diǎn)執(zhí)行,查看在服務(wù)端保存前收到的參數(shù)值是否是亂碼,如果在服務(wù)端收到的就是亂碼,那要檢查下前端傳入的字符是否有轉(zhuǎn)成utf-8

3. mysql配置不正確,導(dǎo)致亂碼
這個(gè)問題是最常遇到的,經(jīng)常發(fā)現(xiàn)有同學(xué)忘記了這塊的配置,就是在spring.datasource.url的配置中少了 &useUnicode=true&characterEncoding=utf8 的配置
spring.datasource.url = jdbc:mysql://localhost:3306/blog_system?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf8
4. 讀取配置文件的變量時(shí),中文顯示為亂碼
如有一個(gè)test.properties的文件,設(shè)置了相應(yīng)的變量值
tom.age?=?${random.int[10,20]}
tom.description?=?tom的年齡可能是這個(gè)數(shù)據(jù):?${tom.age}
在程序中讀取變量description時(shí),會(huì)顯示中文亂碼
??@Value("${tom.description}")
??private?String?description;
這時(shí)候就需要在配置引用配置文件時(shí),添加encoding="UTF-8"
@PropertySource(value?=?"classpath:test.properties",encoding?=?"UTF-8")
以上就是springboot亂碼問題排查思路解析的詳細(xì)內(nèi)容,更多關(guān)于springboot亂碼排查的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java 日期時(shí)間工具包–java.time的使用
這篇文章主要介紹了Java 日期時(shí)間工具包–java.time的使用,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-04-04
Spring MVC之@RequestMapping注解詳解
本篇文章主要介紹了Spring MVC之@RequestMapping 詳解,RequestMapping是一個(gè)用來處理請(qǐng)求地址映射的注解,可用于類或方法上。有興趣的可以了解一下。2017-01-01
java實(shí)現(xiàn)后臺(tái)圖片跨域上傳功能
這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)后臺(tái)圖片跨域上傳功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
public?static?void?main(String[]?args)使用解讀
這篇文章主要介紹了public?static?void?main(String[]?args)的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
基于SpringBoot實(shí)現(xiàn)多線程多主機(jī)TCP通信
這篇文章主要為大家詳細(xì)介紹了如何基于SpringBoot實(shí)現(xiàn)多線程多主機(jī)TCP通信,包括發(fā)送數(shù)據(jù)和接收應(yīng)答并解析,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-09-09
使用java?實(shí)現(xiàn)mqtt兩種常用方式
在開發(fā)MQTT時(shí)有兩種方式一種是使用Paho Java 原生庫來完成,一種是使用spring boot 來完成,這篇文章主要介紹了使用java?實(shí)現(xiàn)mqtt兩種方式,需要的朋友可以參考下2022-11-11

