Python의 유니코드(UTF-8) 파일 I/O
Python에서 파일의 유니코드 텍스트 처리에는 인코딩 및 디코딩 작업이 포함됩니다. 그러나 일반적인 문제의 예시처럼 이러한 개념을 이해하는 것은 어려울 수 있습니다.
디코딩 혼란:
Python 2.4에서 다음 코드를 고려하세요.
<code class="python">ss = u'Capit\xe1n' ss8 = ss.encode('utf8') print(ss, ss8)</code>
이 코드는 다음을 출력합니다.
Capit\xe1n b'Capit\xc3\xa1n'
급성 문자(á)는 유니코드(u'Capitxe1n')와 UTF-8(ss8 = 'Capitxc3xa1n')에서 다르게 표현됩니다. ss8을 인쇄할 때 Python은 기본적으로 ASCII 표현을 사용하므로 xc3xa1n 시퀀스입니다.
'f1' 파일을 쓰기 모드로 열고 여기에 ss8을 쓰면 'Capitxc3xa1nn'이 파일에 기록됩니다. 반대로, ss를 다른 파일 'f2'에 쓸 때 Python은 급성 문자를 이스케이프 시퀀스로 해석하려고 시도하여 'Capitxc3xa1nn'이 생성됩니다.
디코딩 솔루션:
이러한 혼란을 해결하려면 파일을 열 때 인코딩을 명시적으로 지정하세요. Python 2.6 이상에서는 io.open 함수를 사용할 수 있습니다.
<code class="python">import io f = io.open("test", mode="r", encoding="utf-8")</code>
이 접근 방식을 사용하면 파일을 UTF-8로 읽고 쓸 수 있으므로 수동으로 인코딩 및 디코딩할 필요가 없습니다. Python 3.x에서 io.open 함수는 내장 open 함수의 별칭이며, 인코딩 인수도 지원합니다.
또는 코덱 모듈을 사용할 수도 있습니다:
<code class="python">import codecs f = codecs.open("test", "r", "utf-8")</code>
read()와 readline() 메서드를 혼합하면 codecs.open을 사용할 때 문제가 발생할 수 있다는 점에 유의하는 것이 중요합니다.
위 내용은 Python에서 유니코드(UTF-8) 파일을 어떻게 올바르게 읽고 쓸 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!