![](/img/trans.png)
[英]When setting default encoding to UTF-8 in Google App Engine, do I have to set it in all python files?
[英]Google App Engine Python JSON Encoding To UTF-8
我很難使用Python的json庫將以Unicode存儲的西里爾字母轉換為UTF-8。 輸入JSON字符串:
data = '{"name": "\\u0431\\u0433"}'
我從json.dumps(data)
和json.dumps(data).encode('utf8')
獲得的編碼結果與輸入相同,沒有轉換發生。
更奇怪的是, json.dumps(data, ensure_ascii=False).encode('utf8')
返回一個十六進制結果: '{"name": "\\xd0\\xb1\\xd0\\xb3"}'
做錯了嗎?
你做錯的唯一的事情是試圖序列化data
,這已經是序列化為JSON
。 Unicode轉義'\\\\uxxxx'
是西里爾字符的合法等效表示形式。
>>> data = '{"name": "\\u0431\\u0433"}' # already json-serialised
>>> obj = json.loads(data) # deserialise to a python object
>>> obj
{u'name': u'\u0431\u0433'}
>>> print obj['name'] # printing the string displays as cyrillic
бг
標准允許轉義unicode字符( 請參閱此答案 )。 其他json解析器將正確處理轉義字符。
例如,在Firefox控制台中:
data = '{"name": "\\u0431\\u0433"}'
"{"name": "\u0431\u0433"}"
obj = JSON.parse(data)
Object { name: "бг" }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.