[英]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.