当前位置: 首页 > news >正文

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

目录

1 前言:

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

3 全部解决方案

1 前言:

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

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

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

3 全部解决方案

  1. 使用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();
  2. 转换编码:如果无法修改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);
  3. 使用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
    

http://www.lryc.cn/news/214781.html

相关文章:

  • SAML- 安全断言标记语言
  • 【佳学基因检测】Node.js中http模块的使用
  • 前端基础之JavaScript
  • [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等
  • C/C++奇数求和 2021年3月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • Android APT的使用
  • 【刷题宝典NO.0】
  • MySQL数据库——存储过程-介绍以及基本语法(特点、创建、调用、查看、删除、示例)
  • 基础课15——语音标注
  • Linux启动故障排错
  • 全新二开游戏支付通道/话费/电网、紫水晶带云端源码
  • Hadoop相关知识点
  • Javassist讲解1(介绍,读写字节码)
  • 【Linux】常见指令以及具体其使用场景
  • 后台管理(二)
  • 反转链表II(C++解法)
  • 记一次 logback 没有生成独立日志文件问题
  • 数据库强化(1.视图)
  • Mysql与SeaweedFS数据不同步问题产生原因及解决办法
  • Kotlin apply和with用法和区别
  • springboot通过aop自定义注解@Log实现日志打印
  • k8spod详解其二
  • golang包的管理
  • Windows10安装Anaconda与Pytorch的记录
  • 图解Kafka高性能之谜(五)
  • opencv在linux上调用usb摄像头进行拍照
  • 软考之知识产品+例题
  • 玩了一下 Jenkins,最新版本 + JDK11
  • 自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试,开源项目
  • C# 使用.NET的SocketAsyncEventArgs实现高效能多并发TCPSocket通信