解决properties文件乱码问题

首先知道乱码的原因,properties文件的默认编码是iso8859-1,所以我们往里面存中文,但是取出来的时候一般不是用ISO8859-1取的,所以乱码,那么只要编码和解码一致就不会乱码了。

1、直接在Java文件中修改

1
2
3
4
5
InputStream in=this.getServletContext().getResourceAsStream("/proper2.properties");
Properties pro=new Properties();
pro.load(in);
String name=pro.getProperty("name");
response.getWriter().write(new String(name.getBytes("iso8859-1"),"utf-8"));

但是可以看到这样虽然有效,却比较耗费时间和资源,那么可以使用方法2

2、直接修改properties的编码
在myeclipse下打开 window->Perferences->General->ContentTypes 然后将编码从默认的iso8859-1改为utf-8即可
如果这样还没有用的话,还有一招,那就是在编辑properties文件的时候使用myeclipse自带的propertieseditor打开(默认就是这个),打开后选择左下角的properties,直接在编辑器里编辑就好
如下图
这里写图片描述

然后我们点左下角的source 可以看到如下:
这里写图片描述
此时的 哈哈 已经被转换过了,这也就是为什么我们改properties的编码改完后无效的原因,虽然你改了编码,但是你直接在source里面编辑输入中文的话,中文是存不进去的。
这样昨晚后就能输出中文了。

1
2
3
4
5
6
response.setContentType("text/html;charset=utf-8");
InputStream in=this.getServletContext().getResourceAsStream("/proper2.properties");
Properties pro=new Properties();
pro.load(in);
String name=pro.getProperty("name");
response.getWriter().write(name);