2017-04-30 2 views
0

내 프로그램이 requests을 사용하여 웹 서버에서 JSON 문자열을 가져옵니다. 그런 다음 json.loads()으로 사전으로 변환됩니다. 그 후 나는 파일에 루프에서이 사전에서 일부 요소를 쓰기 :HTML 엔티티를 상형 문자/특수 기호로 변환하는 중 오류가 발생했습니다. [python]

parsedJSON = json.loads(cleanJSON) 

for i in range(len(parsedJSON['list'])): 
      f.write(html.unescape(parsedJSON['list'][i][4]) + ' - ' + html.unescape(parsedJSON['list'][i][3]) + '\n') 

문제는 JSON 중국어/일본어 상형 문자 및 기타 특수 기호를 포함 할 수 있다는 것입니다. JSON 문자열에서 html 엔티티로 저장됩니다 (예 : '&# 12493;&# 12467;&# 12496;&# 12473;'은 네코 바스입니다).

html 엔티티를 사람이 읽을 수있는 형식으로 변환하려면 html.unescape('someHTMLEntity')을 사용합니다. 내 데비안 8과 완벽 작동 다른 리눅스 시스템 - 상형 문자 코드는 윈도우 등 실제 상형 문자로 그러나에 변환됩니다 나는이 오류 받고 있어요 (7, 8.1, 10 페이지) :

Traceback (most recent call last): 
    File "main.py", line 144, in <module> 
    f.write(html.unescape(parsedJSON['list'][i][4]) + ' - ' + html.unescape(par 
sedJSON['list'][i][3]) + '\n') 
    File "C:\Users\dangerous\AppData\Local\Programs\Python\Python36-32\lib\encodin 
gs\cp1251.py", line 19, in encode 
    return codecs.charmap_encode(input,self.errors,encoding_table)[0] 
UnicodeEncodeError: 'charmap' codec can't encode characters in position 12-15: c 
haracter maps to <undefined> 

프로그램을 함수 html.unescape('someHieroglyphCode')이 실행되면 충돌합니다.

Windows 용 인코딩 문제는 알고 있지만 정확하게 이해할 수는 없습니다.

답변

0

명시 적으로 UTF-8 인코딩을 사용하여 고정 열기()

f = open('./dump', 'a', encoding='utf-8') 
관련 문제