Springboot从配置文件properties读取字符串乱码的解决

 更新时间:2022年02月17日 08:50:45   作者:喜欢雨天的我  
这篇文章主要介绍了Springboot从配置文件properties读取字符串乱码的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

从配置文件properties读取字符串乱码

当读取properties的内容为:发现中文乱码。原因是由于默认读取的为ISO-8859-1格式,因此需要切换为UTF-8。

主要方式有如下两种:

方式一

在你的application.properties中增加如下配置,避免中文乱码

spring.http.encoding.enabled=true

方法二

在你的settings里面的File Encodings进行更改为如图1.1 中红框。

图1.1

properties文件的属性值为中文,读取时乱码

我们在开发中使用properties文件时,常会遇到这样的问题,比如说:

test.property.value=中文值

我们想把属性值设置成中文,这样无论使用@value还是直接读取出来会出现乱码,总结了两种解决方案如下:

把属性值直接转成unicode编码

写在文件中,如:

test.property.value.unicode=\u4e2d\u6587\u503c

在方法中转码

如下面代码中的getChinese()方法

package com.xiaobai.util; 
import lombok.extern.slf4j.Slf4j; 
import java.io.UnsupportedEncodingException;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle; 
 
@Slf4j
public class PropertiesUtil { 
    protected static ResourceBundle erpResponse; 
    protected static final String PROPERTIES_FILE = "propertytest"; 
    static {
        try {
            erpResponse = PropertyResourceBundle.getBundle(PROPERTIES_FILE);
        } catch (Exception e) {
            log.error(PROPERTIES_FILE + "配置文件加载失败。", e);
        }
    }
 
    public static String get(String key) {
        return erpResponse.getString(key);
    }
 
    public static String getChinese(String key) {
        String string = null;
        try {
            string = new String(erpResponse.getString(key).getBytes("ISO-8859-1"), "utf-8");
        } catch (UnsupportedEncodingException e) {
            log.error(e.getMessage());
        }
        return string;
    }
 
    public static void main(String[] args) {
        //属性值直接写成中文,打印出来的结果:中æå¼
        System.out.println(get("test.property.value"));
        //解决方案一,使用转码的方式,打印结果:中文值
        System.out.println(getChinese("test.property.value"));
        //解决方案二,properties文件中的属性值写成unicode(\u4e2d\u6587\u503c),打印结果:中文值
        System.out.println(get("test.property.value.unicode")); 
    } 
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot中事务的只读属性详解

    SpringBoot中事务的只读属性详解

    这篇文章主要介绍了SpringBoot中事务的只读属性详解,在开发过程中,事务是一个非常重要的概念,在 Spring Boot中,事务是通过 AOP 机制来实现的,可以很方便地进行管理,需要的朋友可以参考下
    2023-08-08
  • SpringBoot整合thymeleaf 报错的解决方案

    SpringBoot整合thymeleaf 报错的解决方案

    这篇文章主要介绍了SpringBoot整合thymeleaf 报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • springboot使用国产加密算法方式,sm2和sm3加解密demo

    springboot使用国产加密算法方式,sm2和sm3加解密demo

    这篇文章主要介绍了springboot使用国产加密算法方式,sm2和sm3加解密demo,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • ZooKeeper官方文档之Java客户端开发案例翻译

    ZooKeeper官方文档之Java客户端开发案例翻译

    网上有很多ZooKeeper的java客户端例子,我也看过很多,不过大部分写的都不好,有各种问题。兜兜转转还是觉得官方给的例子最为经典,在学习之余翻译下来,供朋友们参考
    2022-01-01
  • Spring中的三级缓存与循环依赖详解

    Spring中的三级缓存与循环依赖详解

    Spring三级缓存是Spring框架中用于解决循环依赖问题的一种机制,这篇文章主要介绍了Spring三级缓存与循环依赖的相关知识,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • 基于JavaMail API收发邮件的方法

    基于JavaMail API收发邮件的方法

    这篇文章主要介绍了基于JavaMail API收发邮件的方法,实例分析了javamail的使用方法与相关注意事项,非常具有实用价值,需要的朋友可以参考下
    2015-07-07
  • mybatis plus实体类中字段映射mysql中的json格式方式

    mybatis plus实体类中字段映射mysql中的json格式方式

    这篇文章主要介绍了mybatis plus实体类中字段映射mysql中的json格式方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • jmeter正则表达式提取器的用法与正则详解

    jmeter正则表达式提取器的用法与正则详解

    在使用Jmeter过程中,会经常使用到正则表达式提取器提取器,下面这篇文章主要给大家介绍了关于jmeter正则表达式提取器的用法与正则的相关资料,需要的朋友可以参考下
    2022-07-07
  • 解析java基本数据类型传递与引用传递区别

    解析java基本数据类型传递与引用传递区别

    这篇文章主要介绍了java基本数据类型传递与引用传递区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java源码解析HashMap简介

    Java源码解析HashMap简介

    今天小编就为大家分享一篇关于Java源码解析HashMap简介,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01

最新评论