当前位置: 代码迷 >> 高性能WEB开发 >> 代码出现乱码错误怎么办
  详细解决方案

代码出现乱码错误怎么办

热度:261   发布时间:2013-07-01 12:33:04.0
代码出现乱码异常怎么处理
环境:  linux debian
编码:  UTF-8
描述:  我在代码中.把json字符串 放入流中 具体代码:

public static void writeDataStream(HttpServletResponse response,String dataStr)throws Exception{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
OutputStream os = null;
try {
dos.writeUTF(dataStr);
byte data [] = baos.toByteArray();
response.setCharacterEncoding("GBK");
response.setContentLength(data.length);
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("application/octet-stream");
os = response.getOutputStream();
os.write(data);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
if (os != null) {
os.close();
}
if (dos != null) {
dos.close();
}
if (baos != null) {
baos.close();
}
}
}

使用UTF-8 GBK都会抱如下错误:

请注意白色的地方.没有弄明白.有点诡异.!
客户端接受都正常,都是正确的json String.但是这个不停的打印错误,影响查找其他异常.
麻烦知道的给个提示.多谢了.

------解决方案--------------------
好象是解码失败。
图太小看不清

另外你试下下面的代码,看看结果如何

public static void writeDataStream(HttpServletResponse response,String dataStr)throws Exception{
     try {
 
            response.getWriter().write(dataStr);
        } catch (IOException e) {
            log.error("call error!" + e.getMessage(), e);
        }
}

------解决方案--------------------
flush()  一定要记得调用,
------解决方案--------------------
json规范默认是utf-8,发的时候就要按这个规范
------解决方案--------------------
建议:
在你传之前可以utf-8编码一下,然后针对特殊的中文信息类型的可以先base64编码一下,然后在反编译一下就ok!
  相关解决方案