日期:2014-05-18  浏览次数:20697 次

URLConnection请求页面个别汉字和标点符号中文乱码是为什么?
得到响应转换成字符串用utf-8解码后,有个别汉字和标点符号中文乱码是为什么?
例如:大型汽车
使馆汽车               
领馆汽车               
境外汽车               
外籍汽车               
两??三轮摩托??/option>         
轻便摩托??/option>             
使馆摩托??/option>             
领馆摩托??/option> 

------解决方案--------------------
http://jjzx.lywww.com/index.php?m=Index&a=jdwfcx&useUnicode=true&characterEncoding=utf-8 ;
你的问题好像不在这里,你输出时带了编码GBK,而读取(InputStream)的时候没有解码.需要decode.
------解决方案--------------------
说一下楼主的错误吧,我说楼主的解码方式有问题,果然是。
sTotalString += sCurrentLine +"\n";   
你有这么一句是么。
你这时候其实sTotalString是乱码(相对于GBK,而相对于UTF-8是正常的),而你又添加了一个GBK的换行,等到换成UTF-8格式的时候,自然这个换行就乱码了。
你用下面的这种方式来读:

/**
 * 以指定的格式来读取输入流
 */
public static String readStrByCode(InputStream is,String code){
StringBuilder builder=new StringBuilder();
BufferedReader reader=null;

try {
 reader = new BufferedReader(new InputStreamReader(is,code));
 String line;
 while((line=reader.readLine())!=null){
 builder.append(line+"\n");
 }
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return builder.toString();
}