今天写ajax返回xml,发现返回中文乱码,仔细检查,发现各处编码方式都是utf8,可是为什么会乱码呢?
纠结了一个小时,终于发现问题,源代码如下:
PrintWriter out = response.getWriter(); response.setCharacterEncoding("UTF-8"); response.setContentType("text/xml; charset=UTF-8"); response.setHeader("Cache-Control", "no-cache");
仔细检查发现,原来out在定义之后才给response设置编码方式,这样out还是按照原来的编码方式进行传输。解决办法就是将out定义在设置编码方式的下面,以前总是感觉有这几句话就够了,也没注意这个顺序的问题,今天在这纠结了半天。现在把正确的代码放到下面:
response.setCharacterEncoding("UTF-8"); response.setContentType("text/xml; charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter();
希望大家都引以为戒 呵呵