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

网友投稿 1300 2022-08-28


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

目录从配置文件properties读取字符串乱码方式一方法二properties文件的属性值为中文,读取时乱KWxMyqifb码把属性值直接转成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) {

//属性值直接写成中文,打印出来的KWxMyqifb结果:

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"));

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:pyhon中返回的网页为中文乱码
下一篇:python文件切割(python字符串的切割)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~