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

 更新时间:2023年11月02日 09:49:43   作者: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中文乱码的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Java中Object 类的使用

    详解Java中Object 类的使用

    Java的Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,本文主要来和大家讲讲Object 类的使用,感兴趣的可以了解一下
    2023-05-05
  • Java中的ThreadLocalMap源码解读

    Java中的ThreadLocalMap源码解读

    这篇文章主要介绍了Java中的ThreadLocalMap源码解读,ThreadLocalMap是ThreadLocal的内部类,是一个key-value数据形式结构,也是ThreadLocal的核心,需要的朋友可以参考下
    2023-09-09
  • JDK1.8安装与配置超详细教程

    JDK1.8安装与配置超详细教程

    JDK1.8即为JDK8,JDK8是目前是最成熟最稳定的版本,本文将详细介绍JDK1.8的安装与配置,需要的朋友可以参考下
    2023-03-03
  • SpringBoot解决跨域问题小结

    SpringBoot解决跨域问题小结

    在现代Web应用中,由于安全性和隐私的考虑,浏览器限制了从一个域向另一个域发起的跨域HTTP请求,Spring Boot提供了多种方式来处理跨域请求,本文将介绍其中的几种方法,感兴趣的朋友一起看看吧
    2023-12-12
  • Activiti7通过代码动态生成工作流实现详解

    Activiti7通过代码动态生成工作流实现详解

    这篇文章主要为大家介绍了Activiti7通过代码动态生成工作流实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 详解Mybatis是如何把数据库数据封装到对象中的

    详解Mybatis是如何把数据库数据封装到对象中的

    这篇文章主要介绍了Mybatis是如何把数据库数据封装到对象中的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Swagger2配置Security授权认证全过程

    Swagger2配置Security授权认证全过程

    这篇文章主要介绍了Swagger2配置Security授权认证全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Springboot+Mybatis实现分页加条件查询功能

    Springboot+Mybatis实现分页加条件查询功能

    这篇文章主要为大家详细介绍了Springboot+Mybatis实现分页加条件查询,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • java从键盘输入数字并判断大小的方法

    java从键盘输入数字并判断大小的方法

    今天小编就为大家分享一篇java从键盘输入数字并判断大小的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • java如何根据HttpServletRequest获取IP地址

    java如何根据HttpServletRequest获取IP地址

    文章介绍了几种代理服务器转发服务请求头的方法,这些请求头可能包含真实IP地址,但并不是所有的代理都会包括这些请求头,而且这些IP地址可能被伪造
    2025-03-03

最新评论