반응형
샘플 코드 :
>>> import json
>>> json_string = json.dumps("??? ????")
>>> print json_string
"\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"
문제는 사람이 읽을 수 없다는 것입니다. 내 (스마트 한) 사용자는 JSON 덤프를 사용하여 텍스트 파일을 확인하거나 편집하기를 원하며 XML을 사용하지 않습니다.
객체를 UTF-8 JSON 문자열 ( \ uXXXX
대신)으로 직렬화하는 방법이 있습니까?
해결 방법
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)
Python 2 용주의 사항
with io.open('filename', 'w', encoding='utf8') as json_file:
json.dump(u"??? ????", json_file, ensure_ascii=False)
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에서 UTF-8로 인코딩 된 바이트 문자열 (유형 str
)을 사용할 때 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']
??? ????
참조 페이지 https://stackoverflow.com/questions/18337407
반응형
'파이썬' 카테고리의 다른 글
파이썬 'eval'을 사용하는 것이 왜 나쁜 습관입니까? (0) | 2021.01.08 |
---|---|
파이썬 Python3에서 한 줄의 입력에서 정수 배열을 읽는 방법 (0) | 2021.01.08 |
파이썬 .DAT 파일을 파이썬으로 읽습니까? (0) | 2021.01.08 |
파이썬 Python 2.7 Windows에 요청 모듈 설치 (0) | 2021.01.08 |
파이썬 TypeError : 'int'개체는 인덱싱을 지원하지 않습니다. (0) | 2021.01.08 |
댓글