[問題] 關於 UTF-8 編碼轉換問題

作者: CMiles (最難學會的事)   2015-07-06 21:04:45
我需要呼叫一個 RESTful API 來取得 JSON 格式資料,
資料為中文,編碼為 UTF-8,目前使用 HttpURLConnection 來處理。
但碰到一個問題,所取得的資料編碼為 UTF-8 沒錯,並不是亂碼,
不過所看到的資料都呈現 \u65e5\u85e5\u672c\u8216 之類的格式,
看的到 UTF-8 的編碼方式,卻無法轉成中文,
不知道有沒有人知道如何處理?
或是有沒有比 HttpURLConnection 更好用的 package?
先感謝大家幫忙 <(_ _)>
程式碼如下:
String url = "http://xxx/xxx"; // RESTful API 網址
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
con.setDoOutput(true);
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
con.setRequestProperty("Accept", "application/json;charset=UTF-8");
con.connect();
OutputStream out = con.getOutputStream();
out.write(parameters().getBytes()); // 傳遞某些參數過去
out.close();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
con.disconnect();
作者: ssccg (23)   2015-07-06 21:53:00
就去找個可處理\uXXXX的library或是自己寫例如apache的StringEscapeUtils會拿到\uXXXX就是資料本來就長這樣,跟URLConnection沒關係
作者: CMiles (最難學會的事)   2015-07-06 23:55:00
感謝,我去找找 StringEscapeUtils
作者: haha02 (來人!上夾棍!)   2015-07-07 01:24:00
不想加新的lib的話可以用Properties的load()方法 把讀進來的json先組成一個property的string再用StringReader讀但是有一些不能用的字元的話要自己做property的escape
作者: CMiles (最難學會的事)   2015-07-07 10:15:00
感謝,我兩種方法都來查查看!!!
作者: JustinHere (良葛格)   2015-07-07 20:29:00
作者: CMiles (最難學會的事)   2015-07-08 11:14:00
成功了,感謝樓上各位

Links booklink

Contact Us: admin [ a t ] ucptt.com