欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于编码,乱码

程序员文章站 2022-04-18 18:30:50
...

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