今天在调试程序的时候碰到一个问题: 在windows上编写好的读取网页源代码的程序,转到linux上时中文成了乱码。虽然一开始猜到了是字符集的问题,但是不知道如何入手,乱弄一通也解决不了。最后没办法了,只能请教“Internet”大神了,一开始用搜索词“linux下中文乱码问题”,结果肯定不行啦,都是关于改系统配置的,但是我又不能改系统配置,所以方法当然不能用了,果断抛弃。 接下来,尝试搜索“inputstream中文乱码”,结果还真有相近的的文章,只不过文章是解决读台湾网页时的繁体中文问题,不过我也收到了不少启发。说了半天,开始讲解决方案:
BufferedInputStream bis = new BufferedInputStream(httpcon.getInputStream());
InputStreamReader inputStreamReader = new InputStreamReader(bis,"GBK"); //亮点在这
BufferedReader br = new BufferedReader(inputStreamReader);
在用InputStreamReader将字节流转化为字符流时添加一个字符集就可以了,怎么样,很简单吧。不过说来也惭愧,API上明明有的,哎,只能说自己基础不扎实啊。