파이썬에서 문자열은 기본적으로 유니코드로 표현됩니다. 하지만 때로는 바이트로 표현되는 문자열에 대해서도 작업해야 할 때가 있습니다. 이러한 상황에서 문자열의 바이트와 유니코드 인코딩에 대해 알아보겠습니다.
바이트와 유니코드
바이트(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()
메서드를 사용하여 바이트와 유니코드를 변환할 수 있습니다. 적절한 인코딩 방식을 지정하여 원하는 결과를 얻을 수 있습니다.