我想从servlet使用阿拉伯数据发送HTTPServletResponse到客户端
HTTPServletResponse
我正在尝试这个
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标头不支持UTF-8。他们仅正式支持ISO-8859-1。另请参阅RFC 2616 第2节:
仅当按照RFC 2047 [14]的规则进行编码时,* TEXT的单词才能包含ISO-8859-1 [22]以外的字符集中的字符。
最好的选择是对它们进行URL编码和解码。
response.setHeader("Info", URLEncoder.encode(arabicWord, "UTF-8"));
和
String arabicWord = URLDecoder.decode(response.getHeader("Info"), "UTF-8");
URL编码会将它们转换为完全有效的ISO-8859-1 %nn格式。请注意,标头中发送的数据可能有大小限制。而是以纯文本,JSON,CSV或XML格式在响应正文中发送。以这种方式使用自定义HTTP标头即是设计气味。
%nn