簡體   English   中英

servlet和apache HttpClient的UTF-8編碼問題

[英]UTF-8 encoding problem with servlet and apache HttpClient

我有一個servlet,它發送一個utf-8編碼的字符串。 我也有一個用apache httpcomponents庫編寫的客戶端。

我的問題是在utf-8中閱讀回復。 某些特殊字符(如ñ或ç)無法正確讀取。 如果我使用發送請求的html頁面測試服務器,則字符串是正確的,編碼是UTF-8而沒有BOM。

一些片段: Servlet

response.setContentType ("application/json; charset=UTF-8");
PrintWriter out = response.getWriter ();
out.write (string);

客戶

entity = response.getEntity ();
entity.getContentEncoding (); //returns null
resultado = EntityUtils.toString (entity, HTTP.UTF_8); //Some characters are wrong

有沒有人有同樣的問題?

已解決:對不起,客戶端和服務器工作正常。 我正在寫一個Android應用程序,似乎logcat(我打印消息的地方)不支持utf-8編碼。

你有沒有嘗試過

response.setCharacterEncoding("utf-8");

而不是通過setContentType設置編碼? 它不應該根據文檔有所作為,但誰知道......

另外,在設置字符編碼之前,請確保沒有在代碼中的任何位置調用response.getWriter() ,因為后者在這種情況下不會產生任何影響。

確保流字節為UTF-8格式:

out.write((yourstring.getBytes("UTF-8"));

StandardCharsets.UTF_8可與EntityUtil一起使用以獲得正確的編碼。

這是一個示例代碼段:

HttpEntity entity = response.getEntity();
String webpage = EntityUtils.toString(entity, StandardCharsets.UTF_8);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM