텍스트를 읽고 파일로 쓰는 것을 이해하는 데 약간의 두뇌 장애가 있습니다 (Python 2.4).
# The string, which has an a-acute in it.
ss = u'Capit\xe1n'
ss8 = ss.encode('utf8')
repr(ss), repr(ss8)
( "u'Capit \ xe1n '", "'Capit \ xc3 \ xa1n '")
print ss, ss8
print >> open('f1','w'), ss8
>>> file('f1').read()
'Capit\xc3\xa1n\n'
그래서 내가 Capit\xc3\xa1n
좋아하는 편집기 인 파일 f2에 입력합니다.
그때:
>>> open('f1').read()
'Capit\xc3\xa1n\n'
>>> open('f2').read()
'Capit\\xc3\\xa1n\n'
>>> open('f1').read().decode('utf8')
u'Capit\xe1n\n'
>>> open('f2').read().decode('utf8')
u'Capit\\xc3\\xa1n\n'
내가 여기서 이해하지 못하는 것은 무엇입니까? 분명히 내가 놓친 몇 가지 중요한 마법 (또는 좋은 감각)이 있습니다. 적절한 변환을 위해 텍스트 파일에 한 가지 유형이 있습니까?
내가 정말로 여기에서 실패한 것은 UTF-8 표현의 요점은 실제로 외부에서 올 때 파이썬이 그것을 인식하도록 할 수 없다면입니다. 어쩌면 JSON은 문자열을 덤프하고 대신 사용할 수 있습니다. 요컨대, 파일에서 올 때 파이썬이 인식하고 디코딩 할이 유니 코드 객체의 ASCII 표현이 있습니까? 그렇다면 어떻게 얻습니까?
>>> print simplejson.dumps(ss)
'"Capit\u00e1n"'
>>> print >> file('f3','w'), simplejson.dumps(ss)
>>> simplejson.load(open('f3'))
u'Capit\xe1n'