Ajax中文处理乱码问题总结
1.Jsp页面正确显示中文(其实这个不是Ajax的)
页首写入:
<%@ page contentType="text/html; charset=UTF-8"%>
<Title>后写入:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
这样静态中文就可以显示了.
2.Java解析XMLHttpRequest传递过来的中文.
如果把中文直接放在URL中通过XMLHttpRequest传到Servlet中,中文会变成"??",其实这时用下列函数转一下码即可:
String type =StringUtil.getDecodeParamFromReq("type",request); // 取代了原来的request.getParameter("type");
StringUtil类的完整代码如下:
package com.sitinspring.nnyy.util;
import javax.servlet.http.HttpServletRequest;
public final class StringUtil {
private StringUtil() {
}
public static String getDecodeParamFromReq(String paramName,
HttpServletRequest request) {
String retval = request.getParameter(paramName);
try {
// 中间用ISO-8859-1过渡
byte[] b = retval.getBytes("8859_1");
// 转换成GB2312字符
retval = new String(b, "GB2312");
} catch (Exception e) {
e.printStackTrace();
}
return retval;
}
}
此后type将得到正确的中文.
3.Response如何传出存在中文的xml
很简单,在Servlet的doPost函数首部书写一下三句即可
response.setContentType("text/xml; charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
response.setCharacterEncoding("UTF-8");