더북(TheBook)

BETTER WAY 3
bytes, str, unicode의 차이점을 알자

 

 

파이썬 3에서는 bytesstr 두 가지 타입으로 문자 시퀀스를 나타낸다. bytes 인스턴스는 로(raw) 8비트 값을 저장한다. str 인스턴스는 유니코드 문자를 저장한다.

파이썬 2에서는 strunicode 두 가지 타입으로 문자 시퀀스를 나타낸다. 파이썬 3와는 다르게 str 인스턴스는 로 8비트 값을 저장한다. unicode 인스턴스는 유니코드 문자를 저장한다.

유니코드 문자를 바이너리 데이터(로 8비트 값)로 표현하는 방법은 많다. 가장 일반적인 인코딩은 UTF-8이다. 중요한 건 파이썬 3의 str 인스턴스와 파이썬 2의 unicode 인스턴스는 연관된 바이너리 인코딩이 없다는 점이다. 유니코드 문자를 바이너리 데이터로 변환하려면 encode 메서드를 사용해야 한다. 바이너리 데이터를 유니코드 문자로 변환하려면 decode 메서드를 사용해야 한다.

파이썬 프로그래밍을 할 때 외부에 제공할 인터페이스에서는 유니코드를 인코드하고 디코드해야 한다. 프로그램의 핵심 부분에서는 유니코드 문자 타입(파이썬 3에서는 str, 파이썬 2에서는 unicode)을 사용하고, 문자 인코딩에 대해서는 어떤 가정도 하지 말아야 한다. 이렇게 하면 출력 텍스트 인코딩(이상적으로는 UTF-8)을 엄격하게 유지하면서도 다른 텍스트 인코딩(예를 들면 Latin-1, Shift JIS, Big5)을 아주 쉽게 수용할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.