httpclient 字符编码问题
2013-05-22 12:11
176 查看
在使用HttpClient过程中常见的一些问题。
字符编码
某目标页的编码可能出现在两个地方,第一个地方是服务器返回的http头中,另外一个地方是得到的html/xml页面中。
在http头的Content-Type字段可能会包含字符编码信息。例如可能返回的头会包含这样子的信息:Content-Type: text/html; charset=UTF-8。这个头信息表明该页的编码是UTF-8,但是服务器返回的头信息未必与内容能匹配上。比如对于一些双字节语言国家,可能服务器返回的编码类型是UTF-8,但真正的内容却不是UTF-8编码的,因此需要在另外的地方去得到页面的编码信息;但是如果服务器返回的编码不是UTF-8,而是具体的一些编码,比如gb2312等,那服务器返回的可能是正确的编码信息。通过method对象的getResponseCharSet()方法就可以得到http头中的编码信息。
设置在http头的Content-Type的字符编码:httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
对于象xml或者html这样的文件,允许作者在页面中直接指定编码类型。比如在html中会有<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>这样的标签;或者在xml中会有<?xml version="1.0" encoding="gb2312"?>这样的标签,在这些情况下,可能与http头中返回的编码信息冲突,需要用户自己判断到底那种编码类型应该是真正的编码。
可能有效:String ret = new String(postMethod.getResponseBodyAsString().getBytes("UTF-8"));
字符编码
某目标页的编码可能出现在两个地方,第一个地方是服务器返回的http头中,另外一个地方是得到的html/xml页面中。
在http头的Content-Type字段可能会包含字符编码信息。例如可能返回的头会包含这样子的信息:Content-Type: text/html; charset=UTF-8。这个头信息表明该页的编码是UTF-8,但是服务器返回的头信息未必与内容能匹配上。比如对于一些双字节语言国家,可能服务器返回的编码类型是UTF-8,但真正的内容却不是UTF-8编码的,因此需要在另外的地方去得到页面的编码信息;但是如果服务器返回的编码不是UTF-8,而是具体的一些编码,比如gb2312等,那服务器返回的可能是正确的编码信息。通过method对象的getResponseCharSet()方法就可以得到http头中的编码信息。
设置在http头的Content-Type的字符编码:httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
对于象xml或者html这样的文件,允许作者在页面中直接指定编码类型。比如在html中会有<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>这样的标签;或者在xml中会有<?xml version="1.0" encoding="gb2312"?>这样的标签,在这些情况下,可能与http头中返回的编码信息冲突,需要用户自己判断到底那种编码类型应该是真正的编码。
可能有效:String ret = new String(postMethod.getResponseBodyAsString().getBytes("UTF-8"));
相关文章推荐
- Java文件流 编码问题 - 读取文件时指定字符编码
- 解决HttpClient的FilePart上传文件中使用中文名称文件名乱码问题
- [占位3]繁复的字符编码问题
- 在Android中使用HttpClient 4.3.x出现NoSuchFieldError的问题
- 使用Python 2.x关于统一字符编码的问题。
- java处理字符编码的常见问题(最近在弄字符串设置编码写入文件)
- 中文化和国际化问题权威解析之一:字符编码发展历程
- 【tvision学习笔记一】环境搭建及字符编码问题
- UltraEdit引出的字符编码问题
- 解决httpclient传中文乱码问题
- mysql字符编码并解决中文乱码问题
- Python系列之 - 字符编码问题
- 解决Android Studio中找不到HttpClient问题解决
- 字符编码问题
- 关于httpclient 连接失效引发的问题
- 解决httpclient请求响应压缩文本乱码问题
- cocos2dx 2.2.6 使用 HttpClient 可能导致部分新设备崩溃的问题
- python 字符编码处理问题总结
- 字符编码在编程中的问题
- HttpClient处理登录问题