今天在開發調用第三方接口的時候,使用HTTPCLIENT4調用後返回的結果中中文都是亂碼,蛋疼的亂碼問題又來了!我一開始使用的是:java
<!-- lang: java --> String result = new String(EntityUtils.toString(entity,"UTF-8"));
獲取返回值的,結果是亂碼,諮詢了第三方公司後,他們表示他們的返回的結果已是UTF-8編碼, 因而我直接使用:編碼
<!-- lang: java --> String result = new String(EntityUtils.toString(entity));
悲劇的是返回值仍是亂碼! 後來我試了試:code
<!-- lang: java --> ByteArrayOutputStream baos = new ByteArrayOutputStream(); while((len = is.read(b)) != -1){ baos.write(b, 0, len); } System.out.println("baos="+new String(baos.toByteArray()));
此次不亂了,查看了下EntityUtils.toString源碼,發現若是不指定編碼,EntityUtils默認會使用ISO_8859_1進行編碼,因此若是服務端直接返回 是UTF-8編碼的值能夠進行以下轉碼:接口
<!-- lang: java --> String result = new String(EntityUtils.toString(entity).getBytes("ISO_8859_1"),"UTF-8");
這樣能夠直接使用EntityUtils.toString方法了! 呵呵開發