Java 使用 ResourceBundle 类读取 properties 文件中文乱码的解决方案

Java使用java.util.ResourceBundle类的方式来读取properties文件时不支持中文,要想支持中文必须将文件设置为ISO-8859-1编码格式,这对于开发工具默认为UTF-8来说很不友好,而且就算用ISO-8859-1编码,当其他人将这个项目导入开发工具时很容易出现这个properties文件中的内容有乱码(前提是该文件中包含中文)。

//传统的解决方式:文件设置为ISO-8859-1编码格式

1public static void main(String[] args) { 2 ResourceBundle rb = ResourceBundle.getBundle("weixinreply"); 3 String kefuReply = null; 4 try { 5 //这样直接读取中文会乱码 6 kefuReply = rb.getString("kefureply_festival"); 7 System.out.println("kefuReply=" + kefuReply); 8 //这样读取中文不会乱码 9 kefuReply = new String(rb.getString("kefureply_festival").getBytes("ISO-8859-1"),"GBK");/ 10 System.out.println("kefuReply=" + kefuReply); 11 } catch (UnsupportedEncodingException e) { 12 e.printStackTrace(); 13 } 14}

//更加人性化的解决方式:文件设置为UTF-8编码格式,并且在spring加载properties文件时指定为UTF-8编码格式,在使用的类中通过spring的 @Value("${key}")注解来获取properties文件中对应的值。
app-env-config.xml文件中定义如下内容

1<bean id="propertyConfigurer" 2 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 3 <property name="fileEncoding" value="UTF-8"/> 4 <property name="locations"> 5 <list> 6 <value>classpath:weixinreply.properties</value> 7 </list> 8 </property> 9</bean>

app-env-config.xml需要在applicationContext.xml文件中引入,这样才能保证 @Value("${key}")注解在Controller层和Service层都能获取到值,否者很容易造成 @Value("${key}")注解在Controller层获取不到值而报错。

参考:

https://blog.csdn.net/zsg88/article/details/74852942

https://blog.csdn.net/J3oker/article/details/53839210

https://blog.csdn.net/Weiral/article/details/52875307

https://blog.csdn.net/qq_21033663/article/details/78067983

https://blog.csdn.net/Brookes/article/details/1508539

https://blog.csdn.net/joecheungdishuiya/article/details/6304993

全文完

:)

原文地址:

https://www.cnblogs.com/poterliu/p/10159577.html

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java读取properties文件总结

一、java读取properties文件总结在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getRe

java编码问题总结

对于Java,由于默认的编码方式是UNICODE,所以用中文也易出问题,常见的解决是:Strings2newString(s1.getBytes(“ISO88591”),”GBK”);1、utf8解决JSP中文乱码问题一般说来在每个页面的开始处,加入:<%@pagelanguage"java"contentTyp

tomcat输出控制台信息乱码

使用idea开发java项目时,将其打包成war包,并使用tomcat启动,但控制台输出的中文信息乱码,与大家分享一下解决方案控制台乱码信息如下解决方案:修改文件位置:apachetomcat9.0.44\conf\logging.properties将其中的5处UTF8编码修改为GBK重启项目,idea控制台输出的tomcat部署信息乱码问题得到了解决