gpt4 book ai didi

java - 通过 JSON 从 Java 到 Javascript 的 Unicode 字符串

转载 作者:行者123 更新时间:2023-11-30 11:16:17 24 4
gpt4 key购买 nike

在我正在做的 Java servlet 中:

protected void handleRequests(HttpServletRequest request, HttpServletResponse response)

PrintWriter pw = response.getWriter();

/*...*/

Vector<String> buf = new Vector<>();
for(...) {
ret.add(">žd¿ [?²„·ÜðÈ ‘");
}

/*JSONArray*/ responseArray.put(responseArray.length(), buf);


/*...*/

pw.println(responseArray);

pw.close();
}

在网页客户端 javascript 中,我正在执行 XMLHttpRequest 并且回复不正确,看起来像:>?d¿ [\u001a?²\u201e·ÜðÈ\u2018

(对于上面的 >žd¿ [?²„·ÜðÈ ‘ 输入)

然后我在 servlet 上试了一下:

ret.add(URLEncoder.encode(">žd¿ [?²„·ÜðÈ ‘", "UTF-8"));

我得到:

%3E%C5%BEd%C2%BF%C2%A0%5B%7F%1A%3F%C2%B2%E2%80%9E%C2%B7%C3%9C%C3%B0%C3% 88%C2%A0%E2%80%98

在 javascript 中,然后我申请:

unescape(reply.replace(/\+/g,' ')(replace是因为+号没有转换成空格)

这让我很开心:

>žd¿ [?²â??·Ã?ðÃ?Â

我做错了什么?

(其他一些问题告诉我 servlet 应该作为 utf8 发送。但是我什么时候用 utf8 编码 - 在放入 JSON 对象之前(我使用 org.json。)或之后(在 JSON 响应数组上使用 .toString然后在PrintWriter.println之前转成utf8)

附言这不是我的全部代码,我已经继承了它和我缺乏的一些理论背景。

编辑:在 javascript 中执行 decodeURIComponent(reply).replace(/\+/g,' ') 似乎可以解决问题。但是我找不到 URLEncoder.encode 和 decodeURIComponent 之间的区别。 +/space 是唯一不匹配的地方吗?

最佳答案

decodeURIComponent得到预期的结果

decodeURIComponent("%3E%C5%BEd%C2%BF%C2%A0%5B%7F%1A%3F%C2%B2%E2%80%9E%C2%B7%C3%9C%C3%B0%C3%88%C2%A0%E2%80%98");
">žd¿ [?²„·ÜðÈ ‘"

关于java - 通过 JSON 从 Java 到 Javascript 的 Unicode 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24937319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com