>백엔드 개발 >파이썬 튜토리얼 >Python에서 유니코드(UTF-8) 파일을 어떻게 올바르게 읽고 쓸 수 있습니까?

Python에서 유니코드(UTF-8) 파일을 어떻게 올바르게 읽고 쓸 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-05 02:35:02175검색

How Can I Read and Write Unicode (UTF-8) Files Correctly in Python?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.