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/