2013-06-04 1 views
3

간단히, 다음 코드를 넣어 :어떻게 파이썬 파일 객체로 유니 코드 텍스트를 작성하는

f.write(u'Río Negro') 

다음과 같은 오류 제기

UnicodeEncodeError: 'ascii' codec can't encode character u'\xed' in position 1: ordinal not in range(128) 

내가 무엇을 할 수 있습니까?
파이썬 2.7.3을 사용하고 있습니다.

+0

.encode ('utf-8')를 문자열에 사용 하시겠습니까? – astreal

+0

오류 코드와 함께 SO를 검색 할 수 있습니다. 1,750 이상의 결과가 있습니다. – dda

답변

4

문자열을 인코딩해야합니다. 이 시도 : 수동으로 인코딩을위한 codecs 모듈에서 open를 사용

f.write(u'Río Negro'.encode('utf-8')) 
+0

감사합니다. –

+0

'f'가 바이너리 파일이라고 가정합니다 (파이썬 3에서는''wb''). – jfs

5

이 필요성을 제거합니다 : 파이썬 3에서

import codecs 

with codecs.open('file.txt', 'w', encoding='utf-8') as f: 
    f.write(u'Río Negro') 

는,이 기능이 내장되어

the standard open function에 :

with open('file.txt', 'w', encoding='utf-8') as f: 
    f.write(u'Río Negro') 
+1

. 파이썬 3에서는이 기능이'open()'내장 함수에 의해 제공됩니다. –

+0

'io.open()'이'codecs.open()'대신에 사용되어야합니다. 그것의 행동은 파이썬 3 ('io.open is open')에서'open()'과 같습니다. – jfs