栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中properties文件编码问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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没有效果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732238.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号