2013-03-11 2 views
0

나는 간단 파일이 있습니다기본 파이썬 인코딩

# -*- coding: utf-8 -*- 

a = u'Alegría' 
print a 
print {'a': a} 

출력은 다음과 같습니다

Alegría 
{'a': u'Alegr\xeda'} 

는 이유는 무엇입니까을 대신의 : 사전에

Alegría 
{'a': u'Alegría'} 

감사합니다

+0

사전 인쇄는 문자열의 원시 내용을 인쇄하는 대신'repr'을 사용합니다. – Ryan

답변

6

dict 님의 문자열 r epresentation은 키와 값에 대해 repr을 호출하며, repr은 파일 또는 인터프리터에 붙여 넣을 수있는 문자열 표현을 만들기 위해 최선을 다합니다. 인코딩은 선언되거나 인코딩이 지정되어 있고 객체를 다시 가져옵니다.

문자열은 괜찮습니다. 단지 안전한 표현입니다.

+0

JSON에 직렬화하여 파일에 인쇄하려고했습니다. 나는 추악한 { 'a': u'Alegr \ xeda '}를 파일에 인쇄하고 있기 때문에 JSON이 repr과 비슷한 방식으로 작동한다고 생각합니다. 그것을 '{a': u'Alegría '}로 직렬화하는 법을 알겠습니까? 감사합니다 편집 : 나는 대답을 찾은 것 같아요 : http://stackoverflow.com/questions/4184108/python-json-dumps-cant-handle-utf-8 – Alex

+0

JSON은 비 ASCII 문자와 문자열을 포함해서는 안됩니다. python dicts 표현은 유효한 JSON이 아닙니다. 키 'a'와 값'Alegría '를 가진 JSON 객체는 다음과 같이 보일 것입니다 :'{ "a": "Alegr \ u00eda"}'. 왜 직렬화 된 포맷이 당신에게 중요한가? 당신은 한 쪽 끝에'json.dump'를, 다른쪽에'json.load'를 놓고 당신이 버린 것을 정확히 얻습니다. –

+0

나는 딕트를 파일에 덤핑하고, 손으로 편집하고, 마지막으로 자바 스크립트로로드하려고한다. 더 읽기 쉽기 때문에 쉽게 편집 할 수 있도록 멋지게 JSON 파일에 인쇄하는 것이 좋을 것입니다. – Alex