本篇文章小编给大家分享一下解决Java中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没有效果
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级