httpclient編碼問題(未完成)
最近在做一個httpClient模擬動態操作Web的功能。很正常的遇到了亂碼問題,開始沒有弄清楚亂碼的原因走了很多彎路。終於解決了,記錄備忘一下。
首先http響應的編碼有兩個部分,response頭裡的引數和頁面開頭的meta資訊。其實瀏覽器首先是針對response頭來設定頁面charset的。httpClient模擬頁面也是採用相同方式。所以其實亂碼跟meta無關。
我們知道String-GBK〉ByteArray-GBK〉String是正確的,但如果我們採用String-GBK〉ByteArray-ISO-8859-1〉String呢?結果就是各種各樣的亂碼。
所以當httpClient用iso-8859-1讀取response的時候已經轉換了編碼,很可能在這時已經亂碼了。此時如果用method.getResponseBodyAsString();獲取頁面資訊的時候再進行轉換已經很難還原了。
通常如果要轉換編碼的時候,我會使用:
解決辦法就是使用以下配置。
其他資料:
http://hi.baidu.com/beyond456/blog/item/1798bfa1607d25884610646c.html
http://www.itpub.net/693874.html
http://www.ibm.com/developerworks/cn/opensource/os-httpclient/
http://read.newbooks.com.cn/info/52828.html
首先http響應的編碼有兩個部分,response頭裡的引數和頁面開頭的meta資訊。其實瀏覽器首先是針對response頭來設定頁面charset的。httpClient模擬頁面也是採用相同方式。所以其實亂碼跟meta無關。
我們知道String-GBK〉ByteArray-GBK〉String是正確的,但如果我們採用String-GBK〉ByteArray-ISO-8859-1〉String呢?結果就是各種各樣的亂碼。
所以當httpClient用iso-8859-1讀取response的時候已經轉換了編碼,很可能在這時已經亂碼了。此時如果用method.getResponseBodyAsString();獲取頁面資訊的時候再進行轉換已經很難還原了。
通常如果要轉換編碼的時候,我會使用:
String target = new String(orig.getBytes("ISO-8859-1"),"GBK");
解決辦法就是使用以下配置。
private static final String CONTENT_CHARSET = "GBK";// httpclient讀取內容時使用的字符集
HttpClient client = new HttpClient();
client.getParams().setParameter(
HttpMethodParams.HTTP_CONTENT_CHARSET, CONTENT_CHARSET);
其他資料:
http://hi.baidu.com/beyond456/blog/item/1798bfa1607d25884610646c.html
http://www.itpub.net/693874.html
http://www.ibm.com/developerworks/cn/opensource/os-httpclient/
http://read.newbooks.com.cn/info/52828.html
相關文章
- 受HttpClient困繞的問題HTTPclient
- php編碼問題PHP
- 字元編碼問題字元
- 記一次HttpClient使用問題分析HTTPclient
- MySQL 中字元編碼問題MySql字元
- 字元編碼問題記錄字元
- python 中文編碼問題Python
- 轉python編碼問題Python
- jsp的編碼問題JS
- jdom解析中文編碼問題
- JAVA的中文編碼問題Java
- C++windows編碼問題C++Windows
- 關於golang http.HttpClient.Do的問題GolangHTTPclient
- 碰到一個棘手的問題——關於httpclient。HTTPclient
- PHP 與 JS 的編碼問題PHPJS
- Python的中文編碼問題Python
- HttpClient多檔案上傳程式碼及普通引數中文亂碼問題解決HTTPclient
- JDBC的XML編碼和Delphi融合時的編碼問題JDBCXML
- maven的編碼問題、解決和疑問Maven
- Python 字元編碼問題和其他一些問題Python字元
- 少編碼多思考:程式碼越多 問題越多
- JS、C#中URL編碼解碼問題JSC#
- webstorm 無法編輯程式碼問題WebORM
- Ubuntu中 MySQL 的中文編碼問題UbuntuMySql
- 解決 requests 庫 URL 編碼問題
- python編碼問題在此終結Python
- 解決 apache tomcat 編碼問題ApacheTomcat
- 字元編碼常識及問題解析字元
- iOS Url特殊符號編碼問題iOS符號
- 一個GZIP編碼輸出問題
- .Net(ASP.net)--中文編碼問題ASP.NET
- Gradle 編譯警告亂碼問題Gradle編譯
- 【字元編碼】Java字元編碼詳細解答及問題探討字元Java
- angular5使用httpclient時解決跨域問題AngularHTTPclient跨域
- 使用HttpClient過程中常見的一些問題HTTPclient
- Android 通過httpclient 呼叫碰到的問題總結AndroidHTTPclient
- TOMCAT 請求資料編碼亂碼 問題Tomcat
- springweb開發中編碼亂碼問題解析SpringWeb