Java读取properties文件中文乱码问题解决
2016-04-21 19:09
836 查看
问题的提出:初用properties,读取java properties文件的时候如果value是中文,会出现读取乱码的问题
问题分析:开始以为是文件保存编码问题,把eclipse中所有的文件编码都修改成utf8,问题依然存在;把内容复制到notepad++进行utf8编码转换,问题依旧;上网搜索有人提议重写properties类或者用jdk自带的编码转换工具,嫌麻烦而且凭感觉jdk开发者不可能不考虑东亚几国的字符编码问题;因为properties文件操作的代码是参考百度文库里的一边文章的,分析其代码后,发现其用的是字节流来读取文件,具体代码如下:
Java代码
Properties properties = new Properties();
InputStream inputStream = this.getClass().getResourceAsStream("/menu.properties");
properties.load(inputStream );
System.out.println(properties.getProperty("a"));
因为字节流是无法读取中文的,所以采取reader把inputStream转换成reader用字符流来读取中文。代码如下:
Java代码
Properties properties = new Properties();
InputStream inputStream = this.getClass().getResourceAsStream("/menu.properties");
BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream));
properties.load(bf);
System.out.println(properties.getProperty("a"));
测试后能正常读取中文
问题分析:开始以为是文件保存编码问题,把eclipse中所有的文件编码都修改成utf8,问题依然存在;把内容复制到notepad++进行utf8编码转换,问题依旧;上网搜索有人提议重写properties类或者用jdk自带的编码转换工具,嫌麻烦而且凭感觉jdk开发者不可能不考虑东亚几国的字符编码问题;因为properties文件操作的代码是参考百度文库里的一边文章的,分析其代码后,发现其用的是字节流来读取文件,具体代码如下:
Java代码
Properties properties = new Properties();
InputStream inputStream = this.getClass().getResourceAsStream("/menu.properties");
properties.load(inputStream );
System.out.println(properties.getProperty("a"));
因为字节流是无法读取中文的,所以采取reader把inputStream转换成reader用字符流来读取中文。代码如下:
Java代码
Properties properties = new Properties();
InputStream inputStream = this.getClass().getResourceAsStream("/menu.properties");
BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream));
properties.load(bf);
System.out.println(properties.getProperty("a"));
测试后能正常读取中文
相关文章推荐
- struts2动态方法调用
- java发送get/post请求
- 20160421javaweb之上传下载小案例---网盘
- LeetCode145 Binary Tree Postorder Traversal(迭代实现) Java
- struts action和jsp之间的传值
- JAVA多线程专题
- Struts 404 The requested resource is not available
- 如何搭建javaweb 开发环境
- MyBatis springboot gradle 开发配置
- 20145127《java程序设计》第八周学习总结
- Spring MVC处理异常的4种方式
- android studio 导入eclipse项目 之中文乱码
- java类加载机制
- 让Java swing 中的JTextArea换行
- springboot servlet最佳例子
- spring配置文件详解
- 使用Eclipse的Generator MyBatis/iBatis Artifacts插件自动生成代码,与spring集成
- java学习之泛型
- struts2中的addActionError 、addFieldError、addActionMessage的方法
- java保留两位小数