如果我通过 Ajax 调用发送数据到 Servlet,Javascript UTF-8 编码不起作用

标签 javascript java

Ajax 调用

  $.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 instead of schönleber

最佳答案

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

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

关于如果我通过 Ajax 调用发送数据到 Servlet,Javascript UTF-8 编码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55849099/

相关文章:

java - 与现有映射冲突的映射器

javascript - div 的 Jquery 鼠标事件切换效果即使在鼠标事件退出时也会弹跳

javascript - GruntJS 中的 Try-Catch 任务

javascript - Ajax请求根本没有被触发

JavaScript print() 不带 URL 和日期

Java:根据内部映射对Map进行排序,Map<Long,Map<String, Data>>

javascript - console.trace 或堆栈跟踪来查明 javascript 中错误的来源?

java - 数组第二维初始化失败 - Java

java - 为什么 Apache Ignite 系统线程消耗如此多的内存?

java - 为什么 maven 给我的 utf-8 字符与 eclipse 不同(在 eclipse 中测试运行,在 maven 中失败)?