Java中properties⽂件编码问题
问题⼀:properties⽂件显⽰乱码
tcp协议内容原因是因为properties默认使⽤ASCII码,就算在⽂件中填写了中⽂,再打开后依然会转换成ASCII码的形式。
解决这个问题的办法很简单,设置IDE的properties⽂件的编码⽅式为UTF-8即可,以IDEA为例:
⼤家看到,这⾥不但设置了编码格式为UTF-8,旁边还有Transparent native-to-ascii conversion选项(eclipse⾥⾯没有),这个东西有啥作⽤呢,这⾥先挖个坑,⼀会⼉再填。此时咱们不勾选这个选项。
设置⽂件编码后之前的内容就全部乱码了,需要重新填写内容,这个解决了properties⽂件显⽰乱码的问题。
问题⼆:Java读取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.Property("yaml.name"));
}
解决办法就是通过字符流的⽅式读取properties⽂件:
behance设计网站public void TestProp() throws IOException {
Properties properties = new Properties();
matchpoint翻译InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("application.properties");
properties.load(new InputStreamReader(in, "UTF-8"));
properties文件用什么打开System.out.Property("yaml.name"));
}
问题三:Spring boot的@ConfigurationProperties读取properties⽂件乱码
解决的办法⽬前有三种:
⽅法⼀:使⽤yml⽂件
我在⽹上查询时有⼈说这个办法不⾏,说yml依然会解析成properties⽂件来读取,反正我的验证结果是没问题的,这⾥不做太多讨论⽅法⼆:设置Transparent native-to-ascii conversion
这⾥填之前的坑,在IDEA勾选这个选项的作⽤就是:展⽰为UTF-8格式,但是运⾏时转换成ASCII的形式,实际上使⽤的是
<来进⾏转换。图⼀是IDEA中填写的,图⼆是实际打开时的内容
幻灯片制作素材
当然,如果我们⽤的eclipse没有这个选项的话可以⽤,或者是下相关插件,但是都太鸡肋了
是否有@ConfigurationProperties直接读取UTF-8不乱码的⽅法呢?
⽅法三:添加注解@PropertySource并声明encoding="UTF-8"
//加注解
@Component
@ConfigurationProperties(prefix = "yaml")
@PropertySource(value = {"classpath:yaml.properties"}, encoding = "UTF-8")
但是这⾥有个坑
但是这⾥有个坑
但是这⾥有个坑
这种⽅法只能对⾃定义的properties⽂件有效,对于spring boot默认⽣成的application.properties没有效果
具体原因我也不知,希望知道的⼤拿留⾔告知
>telnet命令用不了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论