最近在使用axios接口進行數據請求的時候,發現接收到的json數據出現了亂碼的問題。經過分析,發現是axios在將數據解析為json對象時,因為沒有指定編碼格式而導致了亂碼的問題。
axios.get('/api/data') .then(res =>{ const result = JSON.parse(unescape(encodeURIComponent(res.data))); console.log(result); })
在上面的代碼中,我們使用了unescape和encodeURIComponent方法對數據進行了編碼和解碼操作。unescape方法可以對url中的特殊字符進行解碼,而encodeURIComponent方法可以將字符串進行編碼,以便于在url中傳輸。
通過對數據進行編碼和解碼,我們可以保證數據在傳輸過程中不會出現亂碼的情況。同時,我們也可以在服務器端對響應頭進行設置,指定編碼格式為UTF-8。
axios.get('/api/data', { headers: { 'Content-Type': 'application/json;charset=utf-8' } }) .then(res =>console.log(res.data)) .catch(err =>console.log(err));
在以上代碼中,我們通過設置headers的方式指定了請求頭的Content-Type為application/json;charset=utf-8。這樣,當接收到數據時,axios就會自動對數據進行解析,從而避免了出現亂碼的情況。
總之,針對axios接收json數據亂碼的問題,我們需要使用unescape和encodeURIComponent方法對數據進行編碼解碼,或者在服務器端對響應頭進行設置,指定編碼格式為UTF-8。