百度翻譯 API 回傳 JSON 中文欄位為 Unicode 轉義:`"dst": "\u4eca\u5929"`(即「今天」)。直接 `getString("dst")` 得到的字串字面包含反斜線與 u,非真正中文字元。
JSON 標準允許 `\uXXXX` 表示 Unicode 碼位。Java `org.json.JSONObject` / `Gson` / `Moshi` / `Jackson` **預設在解析時自動將 `\uXXXX` 解碼為對應字元**。若看到原始反斜線,通常是:
// 1. 取得原始回應字串 (已確保 UTF-8 解碼)
String response = ...; // 來自 OkHttp/Volley/Retrofit 的 response.body().string()
// 2. 使用標準 JSON 庫解析
JSONObject json = new JSONObject(response); // org.json
// 或 Gson
// JsonObject json = JsonParser.parseString(response).getAsJsonObject();
// 3. 直接取得字串,已自動轉碼
String dst = json.getString("dst"); // "今天"
Log.d("TAG", dst);
// Apache Commons Text (推薦)
String unescaped = StringEscapeUtils.unescapeJava(jsonRaw); // 需引入 commons-text
// 或手寫簡易版 (僅處理 \uXXXX)
public static String unescapeUnicode(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); ) {
if (s.startsWith("\\u", i) && i + 5 < s.length()) {
int code = Integer.parseInt(s.substring(i + 2, i + 6), 16);
sb.append((char) code);
i += 6;
} else {
sb.append(s.charAt(i++));
}
}
return sb.toString();
}