2010-05-03 104 views
3

我有一個討厭的問題,這幾天給我一個很難...我想開發一些我自己使用的web服務,目前我正在與我該死的法語口音戰鬥在我的json輸出中正確顯示。輸出json格式良好的口音

這是我的場景:我從我的數據庫中檢索一些行,我把它放在一個字典中。接下來我要做的就是把這個字典傳給json.dumps並輸出結果。

問題是:包含重音符號的字符串呈現爲utf8,因此例如它給了我以下輸出\ u00e9milie(它應該是émilie)。令人沮喪的是,如果我打印每個返回的行,重音將正確地呈現在我的瀏覽器中。

問題:

  • 是正常給這種JSON輸出的?
  • 我該如何'簡單'將包含口音的字典轉換爲json? (whis對我來說很重要,因爲其他網站將與我的輸出一起工作)

這是我正在運行的測試。

# -*- coding: utf-8 -* 
from json import dumps as json_dumps 
import json 

machaine = "une personne émérite" 
print(machaine) 

output = {} 
output[1] = machaine 
output[2] = machaine 
output[3] = machaine 

jsonoutput = json_dumps(output) 

print jsonoutput 

回答

5

就像the docs說的那樣,通過ensure_ascii=False並手動編碼。

+0

就像醫生說的...對不起,我明顯的懶惰。我不明白這個參數的目的是什麼。 感謝您提供快速,清晰的答案。 – user296546 2010-05-03 10:07:45

+0

出於好奇你知道爲什麼這不是默認行爲嗎?輸出正確的編碼字符不是它的第一個目的嗎? – user296546 2010-05-03 10:13:01

+0

它們被正確編碼。 JSON規範允許使用轉義符而不是字符本身對字符進行編碼。如果你只允許使用ASCII碼,那麼你必須使用Unicode轉義碼。 http://json.org/ – 2010-05-03 10:48:09