首頁  >  問答  >  主體

java - url解碼出錯

問題:安卓傳送到後台server的中文,解碼是亂碼。 。

環境:

1. tomcat,在server.xml中已经明确了“utf-8".
2. 安卓已经明确了使用Utf-8编码
3. 在后台使用` java.net.URLDecoder.decode(url, "utf-8");`对url进行解码,但是解码出错。。中文是”??“。

應該是編碼問題啊,但是。 。 。

萬分感謝。 。 。

另外,我使用以下語句測試編碼:

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

。 。 。 。

曾经蜡笔没有小新曾经蜡笔没有小新2675 天前775

全部回覆(2)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-06-23 09:15:56

    後台的有沒有加入編碼過濾器?

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-23 09:15:56

    URLEncode/Decode 是針對 URL 裡面的參數值,避免與 URL 格式本身發生衝突。 Tomcat 會自動解碼 URL 參數值,所以你只要直接取得就好。例如下面這個 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>

    實際上兩個「你好」連結是沒有差別的,你可以打開網頁原始碼看到它們連結地址,一個有編碼一個沒有,但點擊之後,控制台都能輸出正確的值,也就是說 request.getParameter("name") 得到的內容是完全一樣的。

    回覆
    0
  • 取消回覆