最近在使用get請求返回json數(shù)據(jù)時,遇到了亂碼的問題。原本以為是后臺的編碼問題,但經(jīng)過排查發(fā)現(xiàn)后臺沒有問題,而是前臺的處理出了一些問題,導(dǎo)致在解析返回的json數(shù)據(jù)時產(chǎn)生了亂碼。接下來,我將分享一下遇到亂碼的原因以及解決方法。
// 原本的代碼 $.get('/api/data', function(resp) { console.log(resp); }); // 把返回的json進行解析出現(xiàn)了亂碼 { "goods": "\u7f8e\u98df", "price": "\u82b1\u94b1\uff0c\u5343\u91cc\u9999" }
經(jīng)過查閱資料得知,造成這個問題主要是因為前端請求時未指定charset導(dǎo)致的。所以,只需要在請求時指定字符編碼即可解決該問題,如下所示:
$.ajax({ url: '/api/data', type: 'get', dataType: 'json', contentType: "application/json; charset=utf-8", success: function(data) { console.log(data); } });
在這里我們可以看到,只需要在contentType中指定application/json; charset=utf-8 即可指定字符編碼,解決亂碼問題。
總體來說,get請求返回json數(shù)據(jù)亂碼很可能是前端請求未指定字符編碼導(dǎo)致的,解決起來也很簡單,只需要在請求時指定字符編碼即可。