問(wèn)題:安卓傳送到後臺(tái)server的中文,解碼是亂碼。 。
環(huán)境:
1. tomcat,在server.xml中已經(jīng)明確了“utf-8".
2. 安卓已經(jīng)明確了使用Utf-8編碼
3. 在后臺(tái)使用` java.net.URLDecoder.decode(url, "utf-8");`對(duì)url進(jìn)行解碼,但是解碼出錯(cuò)。。中文是”??“。
應(yīng)該是編碼問(wèn)題啊,但是。 。 。
萬(wàn)分感謝。 。 。
另外,我使用以下語(yǔ)句測(cè)試編碼:
if (url.equals(new String(url.getBytes("iso8859-1"), "iso8859-1"))) {
url = new String(url.getBytes("iso8859-1"), "utf-8");
System.out.println("ios8859-1");
}
if (url.equals(new String(url.getBytes("GB2312"), "GB2312"))) {
url = new String(url.getBytes("GB2312"), "utf-8");
System.out.println("gb2312");
}
輸出
ios8859-1
gb2312
。 。 。 。
URLEncode/Decode 是針對(duì) URL 裡面的參數(shù)值,避免與 URL 格式本身發(fā)生衝突。 Tomcat 會(huì)自動(dòng)解碼 URL 參數(shù)值,所以你只要直接取得就好。例如下面這個(gè) JSP:
<%@ page import="java.net.URLEncoder" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
System.out.println("name=" + request.getParameter("name"));
%>
<a href="?name=<%=URLEncoder.encode("你好", "UTF-8")%>">你好</a>
<a href="?name=你好">你好</a>
實(shí)際上兩個(gè)「你好」連結(jié)是沒(méi)有差別的,你可以打開(kāi)網(wǎng)頁(yè)原始碼看到它們連結(jié)地址,一個(gè)有編碼一個(gè)沒(méi)有,但點(diǎn)擊之後,控制臺(tái)都能輸出正確的值,也就是說(shuō) request.getParameter("name")
得到的內(nèi)容是完全一樣的。