使用Django輸出JSON中文的過程中,需要注意一些細節(jié),下面將詳細介紹:
import json from django.http import HttpResponse def my_view(request): data = {'name': '張三', 'age': 20} json_data = json.dumps(data, ensure_ascii=False) return HttpResponse(json_data, content_type="application/json; charset=utf-8")
以上代碼中,我們首先導入了json模塊和Django的HttpResponse類,然后定義了一個視圖函數(shù)my_view。在該函數(shù)中,我們定義了一個字典data,其中包含一個中文名字和一個數(shù)字年齡。接著,我們使用json.dumps函數(shù)將字典data轉換成JSON字符串,并指定ensure_ascii為False,防止中文被轉換成Unicode編碼。最后,我們使用HttpResponse類返回JSON數(shù)據(jù),并設置content_type為“application/json; charset=utf-8”,確保輸出的JSON數(shù)據(jù)中文正確顯示。
需要注意的是,如果在客戶端接收JSON數(shù)據(jù)時,出現(xiàn)中文亂碼問題,可以在接收端設置charset為utf-8,例如:
$.ajax({ type: 'GET', url: '/my_view/', dataType: 'json', success: function(data) { // 接收成功 }, error: function() { // 接收失敗 }, beforeSend: function(xhr) { xhr.setRequestHeader('Accept-Charset', 'utf-8'); } });
以上代碼中,我們使用了jQuery的$.ajax方法來接收JSON數(shù)據(jù),同時在beforeSend回調函數(shù)中,設置請求頭Accept-Charset為utf-8,確保中文能夠正確顯示。