我在java程序中下载一个页面,用的是BufferedReader,直接输出字符串,中文显示为乱码,在浏览器里,选择gb2312就会出现相同的乱码,而选择utf-8就会正常显示,那我应该怎么样才能在程序里得到正常的字符串呢?

解决方案 »

  1.   

    其实就是编码问题。
    我这前是这样处理的,有些慢,不过最基础的办法就是这样,就是取编码过程,你可以在优化下。只要能知道正确的页面编码,就OK了。UTF-8用第一个分支就好了 if (strPageContent.indexOf("UTF-8") > 0
    || strPageContent.indexOf("utf-8") > 0) {
    tmpStr = new String(strPageContent.getBytes("ISO8859-1"),
    "UTF-8");
    } else if (strPageContent.indexOf("GB2312") > 0
    || strPageContent.indexOf("gb2312") > 0) {
    tmpStr = new String(strPageContent.getBytes("ISO8859-1"),
    "GB2312");
    } else if (strPageContent.indexOf("GBK") > 0
    || strPageContent.indexOf("gbk") > 0) {
    tmpStr = new String(strPageContent.getBytes("ISO8859-1"),
    "GBK");
    }
      

  2.   

    如果楼主是使用InputStreamReader来生成BufferedReader,那么在生成InputStreamReader的时候,指定charset为UTF-8即可
      

  3.   

    本人用utf-8 charset,有些网页可以显示中文,但有些网页中文还是乱吗,那位高手可以指点指点