字符流接受utf-8乱码解决

Posted lcxz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符流接受utf-8乱码解决相关的知识,希望对你有一定的参考价值。

原方法:
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String lines;
StringBuffer sb = new StringBuffer("");
while ((lines = reader.readLine()) != null) {
lines = new String(lines.getBytes(), "utf-8");
sb.append(lines);


在new InputStreamReader时默认用文件的编码格式(gbk)解析,若字符串中汉字个数为单数,此时最后一位汉字会因为少1个字节导致乱码;之后的 new String(lines.getBytes(), "utf-8")操作解析不出最后一位


解决方法:

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());
sb.append(lines);
}

读取字符流时直接使用utf-8,会直接接受并转化为bgk格式,不会导致乱码;

以上是关于字符流接受utf-8乱码解决的主要内容,如果未能解决你的问题,请参考以下文章

Java:文件转换流(解决编码问题,防止出现乱码)

Java:文件转换流(解决编码问题,防止出现乱码)

linux 中文乱码解决办法

MobaXterm中文乱码问题解决

servlet 乱码解决方法

mysql出现乱码