解決Java中properties文件編碼問題
1、properties文件顯示亂碼問題
原因是因為properties默認(rèn)使用ASCII碼,就算在文件中填寫了中文,再打開后依然會轉(zhuǎn)換成ASCII碼的形式。
首先確定properties配置文件的編碼格式,通常情況下properties的默認(rèn)編碼格式為ISO-8859-1。
更改properties的編碼格式為UTF-8:
IDEA:設(shè)置->文件編碼
eclipse:右鍵該文件->properties
這里不但設(shè)置了編碼格式為UTF-8,旁邊還有Transparent native-to-ascii conversion選項(eclipse里面沒有),這個東西有啥作用呢
2、讀取properties文件亂碼
設(shè)置完properties文件編碼格式為UTF-8后,一般我們通過字節(jié)流讀取properties文件的方式會亂碼:
public void TestProp1() throws IOException { Properties properties = new Properties(); InputStream in = Thread.currentThread().getContextClassLoader() .getResourceAsStream("application.properties"); properties.load(in); System.out.println(properties.getProperty("yaml.name")); }
解決辦法就是通過字符流的方式讀取properties文件:
public void TestProp() throws IOException { Properties properties = new Properties(); InputStream in = Thread.currentThread().getContextClassLoader() .getResourceAsStream("application.properties"); properties.load(new InputStreamReader(in, "UTF-8")); System.out.println(properties.getProperty("yaml.name")); }
3、Spring boot的@ConfigurationProperties讀取properties文件亂碼
方法一
使用yml文件
方法二
設(shè)置Transparent native-to-ascii conversion也就是上述圖片上屬性文件的配置勾選自動轉(zhuǎn)換成ASCII,但顯示原生的內(nèi)容。
在IDEA勾選這個選項的作用就是:顯示為UTF-8格式,但是運行時轉(zhuǎn)換成ASCII的形式,實際上使用的是native2ascii.exe來進(jìn)行轉(zhuǎn)換。
運行時顯示如下圖:
方法三
添加注解@PropertySource并聲明encoding=“UTF-8”
//加注解 @Component @ConfigurationProperties(prefix = "yaml") @PropertySource(value = {"classpath:yaml.properties"}, encoding = "UTF-8")
注意:這種方法只能對自定義的properties文件有效,對于spring boot默認(rèn)生成的application.properties沒有效果
總結(jié)
到此這篇關(guān)于解決Java中properties文件編碼問題的文章就介紹到這了,更多相關(guān)Java properties編碼問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows系統(tǒng)下Eclipse搭建ESP32編譯環(huán)境及安裝過程
Ecppse 使用了 ESP-IDF 中的 Makefile 支持。這意味著您需要從創(chuàng)建 ESP-IDF 項目開始。您可以使用 github 中的 idf-template 項目,接下來通過本文給大家介紹Windows系統(tǒng)下Eclipse搭建ESP32編譯環(huán)境及安裝過程,感興趣的朋友一起看看吧2021-10-10Spring注解@Profile實現(xiàn)開發(fā)環(huán)境/測試環(huán)境/生產(chǎn)環(huán)境的切換
在進(jìn)行軟件開發(fā)過程中,一般會將項目分為開發(fā)環(huán)境,測試環(huán)境,生產(chǎn)環(huán)境。本文主要介紹了Spring如何通過注解@Profile實現(xiàn)開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境的切換,需要的可以參考一下2023-04-04Java創(chuàng)建線程池為什么一定要用ThreadPoolExecutor
本文介紹了Java創(chuàng)建線程池為什么一定要用ThreadPoolExecutor,手動方式使用ThreadPoolExecutor創(chuàng)建線程池和使用Executors執(zhí)行器自動創(chuàng)建線程池,下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下2022-05-05Java實現(xiàn)獲取前、后N天日期的函數(shù)分享
本文給大家分享的是使用java實現(xiàn)的獲取當(dāng)前日期前后N天的函數(shù),非常的簡單實用,有需要的小伙伴可以參考下。2015-03-03springboot注入yml配置文件 list報錯的解決方案
這篇文章主要介紹了springboot注入yml配置文件 list報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08