java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot读取application.properties中文乱码

解决springboot读取application.properties中文乱码问题

作者:SeaDhdhdhdhdh

初用properties,读取java properties文件的时候如果value是中文,会出现乱码的问题,所以本文小编将给大家介绍如何解决springboot读取application.properties中文乱码问题,需要的朋友可以参考下

1 前言:

初用properties,读取java properties文件的时候如果value是中文,会出现乱码的问题。我们首先需要明了乱码问题的根源。在 Java 中,字符通常以 Unicode 编码表示,而 Properties 类默认采用 ISO-8859-1 编码来处理字符。因此,当我们在 Properties 文件中存储中文字符时,就可能导致乱码问题的出现。

2 本地环境中的解决方案(以idea为例)

将上述默认encoding设置为utf-8,并勾选右侧复选框。即可实现application.properties中的中文值的读取,仅限于本地环境。

3 全部解决方案

使用UTF-8编码:将Properties文件的编码格式设置为UTF-8,可以避免中文乱码问题。可以通过在读取和写入Properties文件时,指定字符编码为UTF-8来实现。例如:

Properties properties = new Properties();
 
try (InputStream inputStream = new FileInputStream("config.properties")) {
 
properties.load(new InputStreamReader(inputStream, "UTF-8"));
 
} catch (IOException e) {
 
e.printStackTrace();
 
try (OutputStream outputStream = new FileOutputStream("config.properties")) {
 
properties.store(new OutputStreamWriter(outputStream, "UTF-8"), null);
 
} catch (IOException e) {
 
e.printStackTrace();

转换编码:如果无法修改Properties文件的编码格式,我们可以在读取和写入Properties文件时,进行编码转换。例如,将ISO-8859-1编码的字符串转换为UTF-8编码的字符串:

String value = properties.getProperty("key");
 
String utf8Value = new String(value.getBytes("ISO-8859-1"), "UTF-8");

在写入Properties文件时,也需要进行相应的编码转换:

String utf8Value = "中文";
 
String isoValue = new String(utf8Value.getBytes("UTF-8"), "ISO-8859-1");
 
properties.setProperty("key", isoValue);

使用Unicode转义序列:如果以上方法都无法解决问题(目前本人遇到的就是这种情况),我们可以使用Unicode转义序列来表示中文字符。在配置文件文件中将需要配置的中文换成unicode编码。使用@value注解读取时会自动转码。

# 需要过滤的区域名称字段
#filter.region.name=检测机构,检测站,检车站,检车,服务机构,查验机构,安检,服务站,查验区,车管所,报废库,监测,检测
filter.region.name=\u68c0\u6d4b\u673a\u6784,\u68c0\u6d4b\u7ad9,\u68c0\u8f66\u7ad9,\u68c0\u8f66,\u670d\u52a1\u673a\u6784,\u67e5\u9a8c\u673a\u6784,\u5b89\u68c0,\u670d\u52a1\u7ad9,\u67e5\u9a8c\u533a,\u8f66\u7ba1\u6240,\u62a5\u5e9f\u5e93,\u76d1\u6d4b,\u68c0\u6d4b
# 需要过滤的点位名称字段
#filter.camera.name=查验,检验
filter.camera.name=\u67e5\u9a8c,\u68c0\u9a8c

以上就是解决springboot读取application.properties中文乱码问题的详细内容,更多关于springboot读取application.properties中文乱码的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文