解决Java中properties文件编码问题

网友投稿 928 2022-08-29


解决Java中properties文件编码问题

目录1、properties文件显示乱码问题2、读取properties文件乱码3、Shttp://pring boot的@ConfigurationProperties读取properties文件乱码总结

1、properties文件显示乱码问题

原因是因为properties默认使用ASCII码,就算在文件中填写了中文,再打开后依然会转换成ASCII码的形式。首先确定properties配置文件的编码格式,通常情况下properties的默认编码格式为ISO-8859-1。更改properties的编码格式为UTF-8:IDEA:设置->文件编码

eclipse:右键该文件->properties

这里不但设置了编码格式为UTF-8,旁边还有Transparent native-to-ascii conversion选项(eclipse里面没有),这个东西有啥作用呢

2、读取properties文件乱码

设置完properties文件编码格式为UTF-8后,一般我们通过字节流读取properties文件的方式会乱码:

public void TestProp1() throws IOException {

Properties properties = new Properties();

InputStream in = Thread.currentThread().getContextClassLoader()

.getResourceAsStream("application.properties");

properties.load(in);

System.out.println(properties.getProperty("yaml.name"));

}

解决办法就是通过字符流的方式读取properties文件:

public void TestProp() throws IOException {

Properties properties = new Properties();

InputStream in = Thread.currentThread().getContextClassLoader()

.getResourceAsStream("application.properties");

properties.load(new InputStreamReader(in, "UTF-8"));

System.out.println(properties.getProperty("yaml.name"));

}

3、Spring boot的@ConfigurationProperties读取properties文件乱码

方法一使用yml文件方法二设置Transparent native-to-ascii conversion也就是上述图片上属性文件的配置勾选自动转换成ASCII,但显示原生的内容。在IDEA勾选这个选项的作用就是:显示为UTF-8格式,但是运行时转换成ASCII的形式,实际上使用的是native2ascii.exe来进行转换。运行时显示如下图:

方法三添加注解@PropertySource并声明encoding=“UTF-8”

//加注解

@Component

@ConfigurationProperties(prefix = "yaml")

@PropertySource(value = {"classpath:yaml.properties"}, encoding = "UTF-8")

注意:这种方法只能对自定义的properties文件有效,对于spring boot默认生成的application.properties没有效果

总结


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

上一篇:python对电脑的操作,获取几核,获取操作系统,获取内存(python读取某进程内存数据)
下一篇:python24种设计模式(python定义了三种界面布局方式)
相关文章

 发表评论

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