[파이썬] 문자열의 바이트와 유니코드 인코딩

파이썬에서 문자열은 기본적으로 유니코드로 표현됩니다. 하지만 때로는 바이트로 표현되는 문자열에 대해서도 작업해야 할 때가 있습니다. 이러한 상황에서 문자열의 바이트와 유니코드 인코딩에 대해 알아보겠습니다.

바이트와 유니코드

바이트(Byte)는 컴퓨터에서 데이터를 저장하고 전송하기 위해 사용되는 기본 단위입니다. 바이트는 0부터 255까지의 값을 나타낼 수 있으며, 문자열은 이러한 바이트의 조합으로 표현됩니다.

유니코드(Unicode)는 전 세계의 모든 문자를 표현하기 위해 개발된 표준 문자 인코딩 방식입니다. 유니코드는 문자와 그에 대응하는 코드 포인트(Code Point)로 이루어져 있습니다.

파이썬 3에서는 기본적으로 유니코드 문자열을 사용하며, 이를 표현할 때는 UTF-8 인코딩을 사용합니다. 하지만 때로는 다른 인코딩 방식으로 유니코드를 표현해야 하는 경우도 있습니다.

바이트와 유니코드 변환

파이썬에서는 바이트와 유니코드 간의 변환을 위해 encode()decode() 메서드를 제공합니다.

바이트를 유니코드로 변환하기

바이트에서 유니코드로 변환하기 위해서는 decode() 메서드를 사용합니다. 이 메서드는 바이트 객체에 대해 적절한 인코딩 방식을 지정하여 호출해야 합니다.

# UTF-8로 인코딩된 바이트를 유니코드로 변환
bytes_data = b'\xec\x9d\x98\xeb\xa1\x9c \xec\xb9\xb4\xed\x9b\x84\xeb\x93\x9c' # UTF-8로 인코딩된 바이트
unicode_data = bytes_data.decode('utf-8') # UTF-8로 디코딩하여 유니코드로 변환

print(unicode_data)  # 출력: '의로 카후드'

유니코드를 바이트로 변환하기

유니코드에서 바이트로 변환하기 위해서는 encode() 메서드를 사용합니다. 이 메서드는 유니코드 문자열에 대해 적절한 인코딩 방식을 지정하여 호출해야 합니다.

# 유니코드를 UTF-8로 인코딩된 바이트로 변환
unicode_data = '의로 카후드'  # 유니코드 문자열
bytes_data = unicode_data.encode('utf-8')  # 유니코드를 UTF-8로 인코딩하여 바이트로 변환

print(bytes_data)  # 출력: b'\xec\x9d\x98\xeb\xa1\x9c \xec\xb9\xb4\xed\x9b\x84\xeb\x93\x9c'

인코딩 방식 지정하기

파이썬에서는 기본적으로 UTF-8을 사용하여 유니코드를 인코딩하고 디코딩합니다. 그러나 다른 인코딩 방식을 사용해야 하는 경우에는 encode()decode() 메서드에 해당 인코딩 방식을 지정해주어야 합니다.

# 인코딩 방식을 지정하여 바이트와 유니코드 변환
bytes_data = 'hello'.encode('cp949')  # 문자열을 cp949로 인코딩하여 바이트로 변환
unicode_data = bytes_data.decode('euc-kr')  # 바이트를 euc-kr로 디코딩하여 유니코드로 변환

결론

파이썬에서는 문자열을 유니코드로 다루지만, 때로는 바이트로 표현되는 문자열에 대해서도 작업해야 할 수 있습니다. 이러한 경우 encode()decode() 메서드를 사용하여 바이트와 유니코드를 변환할 수 있습니다. 적절한 인코딩 방식을 지정하여 원하는 결과를 얻을 수 있습니다.