Android 客戶端與服務端JSP相互傳遞中文

為瞭兼容簡體、繁體及其他語系,推薦使用UTF-8編碼。

首選,我們看看Android端應該怎麼做:

在發送前,應該對參數值要進行UTF-8編碼,我寫瞭一個static的 轉換函數,在做發送動作前用它將參數值轉換成utf8編碼:

public class NetUtil {
	static public String toUtf8Url(String value) {
		try {
			return java.net.URLEncoder.encode(value, "utf8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			return "";
		}
	}
}

還要註意發送接收函數,返回的httpEntity的返回內容轉成BufferedInputStream然後讀出byte[],再用new String(byte[],”utf8″)這種方式獲得返回字符串。

下面是對服務端的處理,首選保證jsp的字符處理都是用UTF-8:


...

  request.setCharacterEncoding("UTF-8");

有兩種辦法可讓JSP正確將UTF-8解碼:

第一種辦法簡單,配置tomcat的server.xml:vi 打開server.xml,查找 <Connector port="80"關鍵字,在裡面指定URI編碼屬性: URIEncoding="UTF-8"

,然後重啟tomcat即可,無需修改JSP代碼。

第二種辦法,如果沒權限修改tomcat配置,那麼需要手動轉換:

String p_str =URLDecoder.decode(X11checkString((String)request.getParameter("str")),"UTF-8");
// 如果修改瞭server.xml,可直接用這個 String p_str = X11checkString((String)request.getParameter("str"));

測試如下圖,英文、簡體中文、傳統中文、日語並存也可正確解碼。

發佈留言