gpt4 book ai didi

java - 在 HTTP header 中发送 UTF-8 值会导致 Mojibake

转载 作者:搜寻专家 更新时间:2023-10-30 21:38:11 25 4
gpt4 key购买 nike

我想使用 HTTPServletResponse 从 servlet 向客户端发送阿拉伯语数据

我正在尝试这个

response.setCharacterEncoding("UTF-8");
response.setHeader("Info", arabicWord);

我收到这样的字

String arabicWord = response.getHeader("Info");

在客户端(接收)也试过这个

byte[]d = response.getHeader("Info").getBytes("UTF-8");
arabicWord = new String(d);

但似乎没有 unicode 因为我收到奇怪的英文单词,所以请问我如何发送和接收阿拉伯语 utf8 单词?

最佳答案

HTTP header 不支持 UTF-8。他们只正式支持 ISO-8859-1。另见 RFC 2616 section 2 :

Words of *TEXT MAY contain characters from character sets other than ISO- 8859-1 [22] only when encoded according to the rules of RFC 2047 [14].

最好的办法是对它们进行 URL 编码和解码。

response.setHeader("Info", URLEncoder.encode(arabicWord, "UTF-8"));

String arabicWord = URLDecoder.decode(response.getHeader("Info"), "UTF-8");

URL 编码会将它们转换为 %nn format这是完全有效的 ISO-8859-1。请注意, header 中发送的数据可能有大小限制。而是在响应正文中以纯文本、JSON、CSV 或 XML 格式发送它。以这种方式使用自定义 HTTP header 是一种设计味道。

关于java - 在 HTTP header 中发送 UTF-8 值会导致 Mojibake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11213160/

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