隨著 JSON 被越來(lái)越廣泛地應(yīng)用于前后端數(shù)據(jù)交互,出現(xiàn)了一些 JSON 顯示中文亂碼的問(wèn)題。在 Java 中,我們需要注意兩個(gè)方面來(lái)解決這個(gè)問(wèn)題。
第一,要確保后端使用 UTF-8 編碼對(duì) JSON 進(jìn)行解析。樣例如下:
// 讀取 JSON 字符串并解析為 JSONObject JSONObject jsonObject = new JSONObject(jsonStr); // 設(shè)置字符集為 UTF-8 String str = new String(jsonObject.getString("text").getBytes("UTF-8"), "UTF-8");
上面的代碼中,我們使用了 JSONObject 類解析 JSON,并在獲取中文字符串的時(shí)候指定了字符編碼為 UTF-8。正確地指定字符編碼可以避免中文亂碼的問(wèn)題。
第二,如果前端使用了 jQuery 等工具,在接收后端發(fā)送的 JSON 數(shù)據(jù)時(shí),需要設(shè)置數(shù)據(jù)類型為 json,并加上 jsonp 回調(diào)函數(shù)。樣例如下:
$.ajax({ type: "POST", url: url, data: data, dataType: "json", jsonp: "jsonpcallback", jsonpCallback: "jsonpcallback", success: function (data) { // 處理返回的 JSON 數(shù)據(jù) } });
上面的代碼中,我們?cè)O(shè)置了 dataType 為 json,同時(shí)指定了 jsonp 參數(shù)和回調(diào)函數(shù)名稱。這樣 jQuery 就會(huì)正確地處理返回的 JSON 數(shù)據(jù),并避免中文亂碼的問(wèn)題。