亂碼是經常困擾非英語Web程序開發的程序員的問題,可喜的是網上的解決方案也不少,有從客戶端想辦法的,有從服務端想辦法的.本人收集了一些材料,總結出自認為比較容易輕松的方案如下,希望與大家一起探討.
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");
此后在js解析responseXML時也不需要escape函數的幫忙了.
示例頁面:
以上