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

目录
  • 从配置文件properties读取字符串乱码
    • 方式一
    • 方法二
  • properties文件的属性值为中文,读取时乱码
    • 把属性值直接转成unicode编码
    • 在方法中转码

从配置文件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"));
    }
}

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

(0)

相关推荐

  • springboot获取properties属性值的多种方式总结

    目录 获取properties属性值方式总结 1. 除了默认配置在 application.properties的多环境中添加属性 2. 使用之前在spring中加载的value值形式 3. 也可以使用springboot里面的Environment 直接取值 4. 如果是自己新建的一个properties文件 获取多个自定义属性值 比如在application中自定义属性 获取properties属性值方式总结 spring boot 在多环境情况下我们需要根据不同的获取不一样的值, 我们会配

  • SpringBoot不读取bootstrap.yml/properties文件问题

    目录 今天写创建了一个SpringBoot项目,配置文件从其他项目拷贝了一份bootstrap.yml 之前一直用的application.yml 心想:application.yml 优先级没有bootstrap.yml 高,bootstrap配置文件肯定没问题 项目一跑来,发现配置文件里面的内容没读取到. 之后通过各种查资料,才明白了application.yml 和bootstrap.yml 的区别,不仅仅是优先级的问题. 先说我的问题是什么原因吧: SpringBoot 项目中如果没有依

  • SpringBoot源码分析之bootstrap.properties文件加载的原理

    目录 1.bootstrap的使用 2.bootstrap加载原理分析 2.1 BootstrapApplicationListener 2.2 启动流程梳理 2.3 bootstrap.properties的加载原理   对于SpringBoot中的属性文件相信大家在工作中用的是比较多的,对于application.properties和application.yml文件应该非常熟悉,但是对于bootstrap.properties文件和bootstrap.yml这个两个文件用的估计就比较少了

  • springboot如何通过@Value,@ConfigurationProperties获取配置

    目录 通过@Value,@ConfigurationProperties获取配置 spring boot 获取配置项值 通过@Value 获取值 通过@ConfigurationProperties 获取值 说下@ConfigurationProperties和@Value区别 配置文件注入值数据校验 通过@Value,@ConfigurationProperties获取配置 spring boot 获取配置项值 使用版本是1.5.4 举例一个线程池的配置: 在application.yml添加

  • springboot代码,注解配置获取yml,properties文件的map即键值对

    目录 注解配置获取yml,properties文件map即键值对 yml获取自定义键值对 properties 获取自定义键值对 properties配置应用,为什么需要使用properties文件 注解配置获取yml,properties文件map即键值对 yml获取自定义键值对 yml中的键值对 test:   map:     key1: value1     key2: value2     key3: value3 pom中的依赖配置 <dependency>     <gro

  • SpringBoot中@ConfigurationProperties实现配置自动绑定的方法

    目录 代码 构造器绑定 结合@PropertySource 代码 pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&

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

    目录 从配置文件properties读取字符串乱码 方式一 方法二 properties文件的属性值为中文,读取时乱码 把属性值直接转成unicode编码 在方法中转码 从配置文件properties读取字符串乱码 当读取properties的内容为:发现中文乱码.原因是由于默认读取的为ISO-8859-1格式,因此需要切换为UTF-8. 主要方式有如下两种: 方式一 在你的application.properties中增加如下配置,避免中文乱码 spring.http.encoding.ena

  • Java读取properties配置文件时,出现中文乱码的解决方法

    如下所示: public static String getConfig(String key) { Properties pros = new Properties(); String value = ""; try { pros.load(new InputStreamReader(Object.class.getResourceAsStream("/properties.properties"), "UTF-8")); value = pr

  • Java @Value("${xxx}")取properties时中文乱码的解决

    @Value("${xxx}")取properties时中文乱码 (1)检查spring的配置文件中,properties的配置编码是否正确. (2)检查你要读取的.properties文件,编码是否正确.可以使用编辑器修改编码,或者文件另存为修改编码为UTF-8 @Value注解为属性赋值的时候出现乱码 在使用@Value注解为属性赋值的时候遇到乱码问题,记录一下解决方案 方案1.配置资源加载 项目是使用spring boot,在启动类的@PropertySource注解中加入(en

  • php截取utf-8中文字符串乱码的解决方法

    复制代码 代码如下: function utf8_substr($str,$len) { for($i=0;$i<$len;$i++) { $temp_str=substr($str,0,1); if(ord($temp_str) > 127){ $i++; if($i<$len){ $new_str[]=substr($str,0,3); $str=substr($str,3); } }else { $new_str[]=substr($str,0,1); $str=substr($s

  • SpringBoot 配置文件中配置的中文,程序读取出来是乱码的解决

    配置文件中是正常显示的中文,但是spring读取到的确是乱码. 我总共有两种解决办法, 第一种方法: 先复制或者备份一下你的配置文件的所有字符,打开设置将transparent native-to-ascii conversion选中,然后返回将之前的配置文件重新粘贴一遍(一定要将中文重新打一遍)如图: Transparent native-to-ascii conversion的意思是:自动转换ASCII编码. 他的工作原理是:在文件中输入文字时他会自动的转换为Unicode编码,然后在ide

  • 深入理解springboot中配置文件application.properties

    目录 前言 正文 自定义属性 参数间引用 使用自定义配置文件 随机值配置 外部配置-命令行参数配置 配置文件的优先级 Profile-多环境配置 总结 前言 Spring Boot使用"习惯优于配置"(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来.所以,我们要想把Spring Boot玩的溜,就要懂得如何开启各个功能模块的默认配置,这就需要了解Spring Boot的配置文件application.properties. 正文

  • SpringBoot配置文件properties和yml的实现

    目录 配置文件的作用 SprintBoot的配置文件(两种): properties yml 读取配置文件的方法: @Value注解读取单个配置项 @ConfigurationProperties读取实体类 properties VS yml 总结 配置文件的作用 通常情况下,一个项目中的一些重要信息都会放在配置文件中,比如:数据库的连接信息.项目的启动端口.一些第三方的秘钥.记录信息的普通日志和异常日志等. SprintBoot的配置文件(两种): Spring Boot的配置文件主要有两种格

  • SpringBoot yml配置文件读取方法详解

    目录 yaml介绍 yaml语法规则 yaml数据读取 Environment读取yaml全部属性数据 自定义对象封装指定数据 yaml介绍 YAML(YAML Ain't Markup Language),一种数据序列化格式 优点: 容易阅读 容易与脚本语言交互 以数据为核心,重数据轻格式 YANL文件扩展名 .yml(主流) .yaml 几种数据格式比较 yaml语法规则 大小写敏感 属性层级关系使用多行描述,每行结尾使用冒号结束 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许

  • SpringBoot 使用 @Value 注解读取配置文件给静态变量赋值

    1.application.properties 配置文件 mail.username=xue@163.com mail.password=xue mail.host=smtp.163.com mail.smtp.auth=true 2.给普通变量赋值,直接在变量上添加 @Value 注解 import org.springframework.beans.factory.annotation.Value; public class MailConfig { @Value("${mail.user

  • 聊聊ResourceBundle和properties读取配置文件的区别

    java.util.ResourceBundle 和java.util.properties 读取配置文件区别 这两个类都是读取properties格式的文件的,而Properties同时还能用来写文件. Properties的处理方式是将其作为一个映射表,而且这个类表示了一个持久的属性集,他是继承HashTable这个类. ResourceBundle本质上也是一个映射,但是它提供了国际化的功能. 假设电脑设置的地区是中国大陆,语言是中文 那么你向ResourceBundle(资源约束名称为b

随机推荐