ensure_ascii=False
스위치를 사용하여 json.dumps()
값을 UTF-8로 수동으로 인코딩하십시오.
>>> 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())
"ברי צקלה"
파일에 쓰고 있다면 json.dump()
인코딩하고 파일 객체에 그대로 두십시오.
with open('filename', 'w', encoding='utf8') as json_file:
json.dump("ברי צקלה", json_file, ensure_ascii=False)
파이썬 2에 대한 경고
파이썬 2의 경우 고려해야 할 몇 가지주의 사항이 있습니다. 이것을 파일에 쓰는 경우 io.open()
대신 open()
유니 코드 값을 인코딩하는 파일 객체를 생성하는 대신 대신 사용할 수 있습니다 json.dump()
.
with io.open('filename', 'w', encoding='utf8') as json_file:
json.dump(u"ברי צקלה", json_file, ensure_ascii=False)
있음을 유의 수행 버그 json
모듈ensure_ascii=False
플래그가 생산할 수있는 혼합 의 unicode
와 str
객체. Python 2의 해결 방법은 다음과 같습니다.
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에서는 str
UTF-8로 인코딩 된 바이트 문자열 (type )을 사용할 때 encoding
키워드 도 설정해야 합니다.
>>> 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']
ברי צקלה