標籤:android utf8 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 blockreturn "";}}}
還要注意發送接收函數,返回的httpEntity的返回內容轉成BufferedInputStream然後讀出byte[],再用new String(byte[],"utf8")這種方式獲得返回字串。
下面是對服務端的處理,首選保證jsp的字元處理都是用UTF-8:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
...
<%@ page language="java" import="java.util.*" pageEncoding="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"));
測試如,英文、簡體中文、傳統中文、日語並存也可正確解碼。