Tot*_*tti 10 java servlets header http utf-8
我想从servlet使用阿拉伯数据发送HTTPServletResponse到客户端
我正在尝试这个
response.setCharacterEncoding("UTF-8");
response.setHeader("Info", arabicWord);
Run Code Online (Sandbox Code Playgroud)
我收到这样的字眼
String arabicWord = response.getHeader("Info");
Run Code Online (Sandbox Code Playgroud)
在客户端(接收)也试过这个
byte[]d = response.getHeader("Info").getBytes("UTF-8");
arabicWord = new String(d);
Run Code Online (Sandbox Code Playgroud)
但似乎没有unicode,因为我收到奇怪的英语单词,所以请问我怎样才能发送和接收阿拉伯语utf8单词?
Bal*_*usC 31
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"));
Run Code Online (Sandbox Code Playgroud)
和
String arabicWord = URLDecoder.decode(response.getHeader("Info"), "UTF-8");
Run Code Online (Sandbox Code Playgroud)
URL编码会将它们转换为完全有效的ISO-8859-1 %nn格式.请注意,标头中发送的数据可能具有大小限制.而是以纯文本,JSON,CSV或XML格式将其发送到响应正文中.使用自定义HTTP标头这种方式就是设计气味.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           16942 次  |  
        
|   最近记录:  |