javascript - 如果我通过 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
解决方案
作为 ajax 请求的一部分,设置contentType
只是告诉接收服务器您打算发送什么,它不会改变您的数据 - 您需要首先通过适当的编码函数传递它。
您可能会发现此链接很有用:MDN
推荐阅读
- mysql - 尽管使用了卷,但 Docker mysql 容器不会保留数据。为什么?
- python - Boto3 Glue客户端create_job()模块路径错误`ModuleNotFoundError`
- laravel - 播种错误:DateTime 类的对象无法转换为字符串
- javascript - 用于更新部分的 JavaScript 按钮
- c - C语言中的浮点数很奇怪
- java - 由于 android.webkit,应用在 Playstore 上不兼容
- python - 我有两个模型 Chat 和 Message,我如何使用 Message 的 pub_date 订购 Chat?
- javascript - ExtJs - 动态改变面板的展开和折叠按钮
- python - 根据数组的子集填充列
- terminal - 在终端中打开文件夹