Ajax中文问题彻底解决
中文问题是和做WEB的程序员形影不离的, jsp页面的中文问题,Url传参的中文问题,request取值的中文问题…….现在Ajax日趋成熟了,它的中文问题也一样浮出水面了。
其实万变不离其宗,中文问题就是编码问题,我们知道所有的字符集,不管是英文,操作符,标点符号,最基本的编码方式就是ISO-8859-1,中文的编码方式现在最常用的就是GBK,GB2312,UTF-8三种,这三种都是继承自ISO-8859-1,所以只要把握了底层最基本的编码,不管是ajax还是struts,中文问题的解决都是一脉相承的。
好,那我们来看看一个完整的ajax流程,一步步的来剖析它的中文问题及解决方法。
首先是页面:JSP页面的编码方式决定了页面上中文的显示,这点应该都很清楚。要使jsp页面中文不是乱码
这样就可以指定该页面的中文编码为UTF-8了(用UTF-8的原因是因为xml的编码方式都是UTF-8的,而ajax是和xml紧密相连的,jsp页面及之后的ajax请求参数的提交,servlet中往客户端写输出流都统一为UTF-8,对于ajax的处理是相当有必要的)。
?
二是http请求中body部分的中文,这就是表单中的数据了,这部分ajax的HttpRequest有专门的方法设置:如下所示:?
responseText也好,里面的数据都不会有乱码了。 response.setContentType("text/xml;charset=UTF-8"); response.setContentType("text/xml;charset=UTF-8"); response.setHeader("Pragma", "no-cache"); //HTTP 1.0 response.setDateHeader("Expires", 0); //prevents caching at the proxy server PrintWriter out = response.getWriter(); out.write(outXML); out.flush(); out.close();?OK
至此ajax的中文问题已全部解决,从最初的jsp页面看过来,中文就是一个编码方式的问题,出现乱码的原因大部分是在错误的时间,错误的地点进行了编码的操作,且编码的类型一会儿GBK,一会儿GB2312,一会儿UTF-8,当然数据会乱掉了。实际上如果熟悉了HTTP协议,对编码的问题有一个清晰的了解,按照上述方法处理,中文是一点问题都没有的。