首页 > 解决方案 > 如果我通过 Ajax 调用向 Servlet 发送数据,Javascript UTF-8 编码不起作用

问题描述

阿贾克斯调用

  $.ajax({
            url : URL_SERVER + "SucheMitarbeiter",
            type : "GET",
            contentType: "application/x-www-form-urlencoded;charset=UTF-8",
            data : {
                userid : setzeUserId,
                nachname : nachname,
                vorname : vorname,
                kim : "",
                pnr : ""
            },
            cache : false,
                              [...]

这是对我的 Servlet 的请求

Request URL: http://localhost:8080/TrackingToolDB/SucheMitarbeiter?userid=BKOUBIK&nachname=sch%C3%B6nleber&vorname=&kim=&pnr=&fk

如您所见,Nachname 未编码为 UTF-8。

在我的名为 SucheMitarbeiter 的 Servlet 中,我尝试解码请求:

String encoding = request.getCharacterEncoding();
if (encoding == null) encoding = "UTF-8";

String nachname = request.getParameter("nachname");


nachname = URLDecoder.decode(nachname,encoding);

但它不起作用。我总是得到

schönleber 而不是 schönleber

标签: javascriptjava

解决方案


作为 ajax 请求的一部分,设置contentType只是告诉接收服务器您打算发送什么,它不会改变您的数据 - 您需要首先通过适当的编码函数传递它。

您可能会发现此链接很有用:MDN


推荐阅读