关于编码,乱码

起因:今天在改一段代码  大意是要求从一个property文件中读取内容 key是数字 value是字符串(汉字) 然后放到map里面 作为错误代码和错误提示信息的动态映射。

这样的一段代码

InputStream is = this.getClass().getClassLoader().getResourceAsStream(configFile); 
// InputStreamReader ir = new InputStreamReader(is);
Properties prop = new Properties();		
prop.load(is);  //prop.load(ir);
for (Entry<Object, Object> entry : prop.entrySet()) {
	String key = (String) entry.getKey();
	String value = (String) entry.getValue();
		if (key != null && (key = key.trim()).length() > 0
			&& value != null && (value = value.trim()).length() > 0) 
               {
				mapping.put(key, value);
               }
}

 开始的时候 读入字节流 用Properties的一个load方法  再放到map里面

这样问题出来了 乱码。。。

小看了一下 因为文件是用utf-8编码 而对应到这里是字节流  javadoc对 load(InputStream in) 有这样一段说明“here is assumed to use the ISO 8859-1 character encoding; that is each byte is one Latin1 character.”

因此会出现乱码的问题 。

 

好在properties也有对应的这样的方法  load(Reader reader) 这样只需要讲inputStream 改变成 Reader即可

于是有了注释掉的那段代码 这里java io又该复习复习了。。。

 

另外这个状况 很好的反应了编码乱码 字符字节的问题 应该留意

两个url记录了 编码问题 看一下 http://www.360doc.com/content/06/1020/18/3500_235455.shtml

http://blog.renren.com/share/68464/3096404244

 

 

你可能感兴趣的:(Blog)