Heim  >  Fragen und Antworten  >  Hauptteil

Fehler beim Dekodieren der URL

Problem: Der von Android an den Hintergrundserver gesendete chinesische Text wird in verstümmelte Zeichen dekodiert. .

Umgebung:

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

Es sollte ein Codierungsproblem sein, aber. . .

Vielen Dank. . .

Außerdem habe ich die folgende Anweisung verwendet, um die Kodierung zu testen:

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");
}

Ausgabe

ios8859-1
gb2312

. . . .

曾经蜡笔没有小新曾经蜡笔没有小新2675 Tage vor774

Antworte allen(2)Ich werde antworten

  • 淡淡烟草味

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

    后台的有没有加入编码过滤器?

    Antwort
    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") 得到的内容是完全一样的。

    Antwort
    0
  • StornierenAntwort