2012-09-04 39 views
1

我有以下情形:的Apache HTTP客戶端編碼UTF-8不工作

JSP - >的Servlet - > ServiceAPI - >服務的Servlet

我在JSP頁面中輸入一些cyrilic符號,這是場景的開始。在接下來的步驟中,我使用UTF-8從JSP讀取數據。所以,很好。一切都好。

然後我將數據傳遞給ServiceAPI,該ServiceAPI將其發送到服務Servlet。問題來了。服務Servlet中的數據讀作'??????'。所以,我猜想問題出在Service API中,它不能正確發送數據。 ServiceAPI實現使用Apache Http Client將數據發送到服務Servlet。

當我在Apache Http Client文檔(http://hc.apache.org/httpclient-3.x/preference-api.html#HTTP_method_parameters)中閱讀時,有一種方法可以在請求中設置字符編碼。但是我不能應用這個,因爲存在以下錯誤:「訪問限制:由於所需庫的限制,來自類型HttpParams的方法setParameter(String,Object)不可訪問......」。所以我有點卡住了。你有什麼想法,如果問題是真的在Apache Http客戶端,我怎麼能解決它。

在此先感謝。

+0

究竟是什麼你使用的是哪個版本的HC做了這一切?你在你的問題中提到了3.x,但你標記了4.x.這很混亂。這些版本是非常不同的。 – BalusC

回答

-1

要正確實現Web應用程序字符編碼包括4個步驟

1.首先,你必須配置你的Web服務器。

2.然後,您必須強制您的Web應用程序對所有請求/響應使用UTF-8編碼。

3.第三,你必須使用JSP頁面編碼。

4.最後你必須使用HMTL-meta標籤。

在你的情況下,問題在於最有可能在第2步IMO

這裏是你How to get UTF-8 working in Java webapps?完美的一篇文章,介紹如何廣泛

+0

這並不回答OP的具體問題。這隻能回答JSP-Servlet部分,而不是Servlet-HttpClient部分。 – BalusC