作者CMiles (最難學會的事)
看板java
標題[問題] 關於 UTF-8 編碼轉換問題
時間Mon Jul 6 21:04:45 2015
我需要呼叫一個 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();
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.119.171
※ 文章網址: https://www.ptt.cc/bbs/java/M.1436187889.A.443.html
→ ssccg: 就去找個可處理\uXXXX的library或是自己寫 07/06 21:53
→ ssccg: 例如apache的StringEscapeUtils 07/06 21:57
→ ssccg: 會拿到\uXXXX就是資料本來就長這樣,跟URLConnection沒關係 07/06 21:58
→ CMiles: 感謝,我去找找 StringEscapeUtils 07/06 23:55
推 haha02: 不想加新的lib的話可以用Properties的load()方法 把讀進 07/07 01:24
→ haha02: 來的json先組成一個property的string再用StringReader讀 07/07 01:25
→ haha02: 但是有一些不能用的字元的話要自己做property的escape 07/07 01:26
→ CMiles: 感謝,我兩種方法都來查查看!!! 07/07 10:15
→ JustinHere: 日藥本舖 07/07 20:29
→ CMiles: 成功了,感謝樓上各位 07/08 11:14