python json.dumps 중국어 디코딩 문제 해결
json.dumps는 서로 다른 버전의 Python에서 서로 다른 표현을 할 수 있습니다. 아래에 언급된 중국어 디코딩 문제는Python3 버전에 존재하지 않습니다.
주: 다음 코드는python 2.7 버전에서 테스트 통과
# -*- coding: utf-8 -*-odata = {'a' : ' '}print odata
결과:
{'a': '\xe4\xbd\xa0\xe5\xa5\xbd'}
print json.dumps(odata)
결과:
{"a": "\u4f60\u597d"}
print json.dumps(odata,ensure_ascii=False)
결과:
{"a": " "}
print json.dumps(odata,ensure_ascii=False).decode('utf8').encode('gb2312')
결과:
{"a": " "}
중국어 인코딩을 해결하려면python2.7에서 문자열을 어떻게 처리하는지 알아야 합니다.#--coding:utf-8--의 작용으로 파일 내용은utf-8로 인코딩되기 때문에print odata
출력은utf-8 인코딩 후의 결과입니다.
{‘a': ‘\xe4\xbd\xa0\xe5\xa5\xbd'}
json.dumps 서열화 시 중국어에 기본적으로 사용되는 ascii 인코딩, print json.dumps(odata)
유니코드 인코딩 결과 출력print json.dumps(odata,ensure_ascii=False)
사용하지 않는 ascii 인코딩, gbk로 인코딩‘ '
utf8로 인코딩하면 %E4%BD%A0%E5%A5%BD
gbk로 인코딩하면 라쿤
문자열은 Python 내부의 유니코드 인코딩을 나타냅니다.따라서 인코딩 변환을 할 때, 보통 유니코드를 중간 인코딩으로 해야 한다. 즉, 다른 인코딩된 문자열을 유니코드로 디코딩하고, 유니코드에서 다른 인코딩으로 디코딩해야 한다.
decode의 역할은 다른 인코딩된 문자열을 유니버설 인코딩으로 변환하는 것이다
decode('utf-8')
utf-8 인코딩된 문자열을 유니코드 인코딩으로 변환합니다.encode의 역할은 유니코드 인코딩을 다른 인코딩의 문자열로 변환하는 것이다
encode(‘gb2312')
unicode 인코딩된 문자열을gb2312 인코딩으로 변환합니다.python3에는 이런 문제가 없기 때문에 가장 간단한 방법은
__future__
모듈을 도입하여 새로운 버전의 특성을 현재 버전으로 가져오는 것이다
from __future__ import unicode_literalsprint json.dumps(odata,ensure_ascii=False)
결과:
{"a": " "}
파일을 쓸 때 Python 2.7의 UnicodeEncodeError:'ascii'코덱 can't encode 이상 오류가 발생했습니다.대신의 해결 방법:
open을 사용하여 파일을 열지 않고 codecs를 사용합니다.
from __future__ import unicode_literalsimport codecsfp = codecs.open('output.txt', 'a+', 'utf-8')fp.write(json.dumps(m,ensure_ascii=False))fp.close()
python 출력 중국어 부호 문제에 대한 자세한 내용은 아래의 링크를 보십시오
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 중국어 디코딩 문제 해결 방법 총결산즉, 다른 인코딩된 문자열을 유니버설 인코딩(decode)으로 하고 유니버설 인코딩(encode)에서 다른 인코딩으로 해야 한다. decode의 역할은 다른 인코딩된 문자열을 유니버설 인코딩으로 바꾸는 것입니다. 예...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.