Kullanım ensure_ascii=Falseiçin anahtarı json.dumps(), daha sonra UTF-8 el değerini kodlamak:
>>> json_string = json.dumps("ברי צקלה", ensure_ascii=False).encode('utf8')
>>> json_string
b'"\xd7\x91\xd7\xa8\xd7\x99 \xd7\xa6\xd7\xa7\xd7\x9c\xd7\x94"'
>>> print(json_string.decode())
"ברי צקלה"
Bir dosyaya yazıyorsanız, json.dump()kodlamak için onu kullanın ve dosya nesnesine bırakın:
with open('filename', 'w', encoding='utf8') as json_file:
json.dump("ברי צקלה", json_file, ensure_ascii=False)
Python 2 için uyarılar
Python 2 için dikkate alınması gereken bazı uyarılar var. Eğer bir dosyaya bu yazıyorsanız, kullanabilirsiniz io.open()yerine open()daha sonra, yazma kullandıkça sizin için Unicode değerleri kodlar dosya nesnesini üretmek için json.dump()o dosyaya yazma yerine:
with io.open('filename', 'w', encoding='utf8') as json_file:
json.dump(u"ברי צקלה", json_file, ensure_ascii=False)
Bir olduğu not Do bulunan böcek jsonmodülüensure_ascii=False bayrak bir üretebilir karışımı içinde unicodeve strnesneleri. Python 2 için geçici çözüm şöyledir:
with io.open('filename', 'w', encoding='utf8') as json_file:
data = json.dumps(u"ברי צקלה", ensure_ascii=False)
# unicode(data) auto-decodes data to unicode if str
json_file.write(unicode(data))
Python 2'de, strUTF-8 olarak kodlanmış bayt dizeleri (tip ) kullanırken, encodinganahtar kelimeyi de ayarladığınızdan emin olun :
>>> d={ 1: "ברי צקלה", 2: u"ברי צקלה" }
>>> d
{1: '\xd7\x91\xd7\xa8\xd7\x99 \xd7\xa6\xd7\xa7\xd7\x9c\xd7\x94', 2: u'\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4'}
>>> s=json.dumps(d, ensure_ascii=False, encoding='utf8')
>>> s
u'{"1": "\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4", "2": "\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"}'
>>> json.loads(s)['1']
u'\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4'
>>> json.loads(s)['2']
u'\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4'
>>> print json.loads(s)['1']
ברי צקלה
>>> print json.loads(s)['2']
ברי צקלה