java中文乱码问题,帮忙看下哪里有问题

//读取响应
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream(),"utf-8"));
String lines;
StringBuffer sb = new StringBuffer("");
while ((lines = reader.readLine()) != null) {
lines = new String(lines.getBytes(),"utf-8");
//System.out.println(lines);
sb.append(lines);
}
str = sb.toString();
//System.out.println(str);
reader.close();

首先分析下你的代码:
1. InputStreamReader 对于 connection 的数据流,是采用 UTF-8 把字节转换成字符
2. lines.getBytes() 是采用系统的默认编码把字符解码成字节数组
3. new String(lines.getBytes(),"utf-8") 又对解码后的字节数组采用 UTF-8 转换为字符。

下面分析你的问题:
1. 假设 connection 的数据流是 utf8 编码,而你的系统默认编码也是 utf-8, 那么中文字符问题是不肯能存在的,除非是数据问题
2. 假设 connection 的数据流是 utf8 编码,而你的系统默认编码不是 utf-8, 那么中文字符问题是肯定存在的,即使按照你的方法,去掉lines后面的“utf-8”,这个问题还是会存在
3. 假设 connection 的数据流不是 utf8 编码, 那么 InputStreamReader 读取时就会有问题了, 即使按照你的方法,去掉lines后面的“utf-8”,这个问题还是会存在.

针对你的提问,我非常的好奇,不知道你是怎么解决的,呵呵,如果你想了解真相,建议你把 connection 获取的数据的编码以及系统的编码都发出来,如果还是没搞清楚,可以把 connection 获取的数据的字节数组发出来,我可以帮你分析分析。

已经解决,去掉lines后面的“utf-8”即可,有哪位能解释一下??

读取得到的数据不是UTF-8的

http://blog.csdn.net/niaonao/article/details/51762466

选中所有代码 ctrl+enter 之后更改类型 把utf-8更改为别的

你的整个java开发环境里面应该是gbk,默认都是的,所以你得到的时间再用utf8,你就把原来的编码格式弄乱了。去掉就好了,还有就是你最好把环境的编码格式都改成utf8,不然以后还会乱的。

UTF-8 改成 GB2312