关于编码,乱码

起因:今天在改一段代码  大意是要求从一个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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值