문자 인코딩은 컴퓨터가 텍스트 데이터를 저장하고 전송하는 방식입니다.
서로 다른 인코딩 방식이 있으며, 각 방식은 특정 문자 세트를 특정 비트 패턴으로 변환하는 규칙을 가지고 있습니다.
인코딩 (Encoding): 텍스트 데이터를 특정 문자 인코딩 방식으로 변환하여 "바이트 형태"로 저장하거나 전송하는 과정입니다.
디코딩 (Decoding): 인코딩된 바이트 데이터를 다시 "텍스트 데이터"로 변환하는 과정입니다.
아스키 코드는 미국 정보 교환 표준 코드(American Standard Code for Information Interchange)의 약자로, "128개의 문자 집합을 7비트로 인코딩" 하는 방식입니다.
주로 영어 문자와 숫자, 기본 구두점 등을 포함합니다.
text = "Hello, ASCII!"
encoded = text.encode('ascii')
decoded = encoded.decode('ascii')
print("Encoded:", encoded) # Encoded: b'Hello, ASCII!'
print("Decoded:", decoded) # Decoded: Hello, ASCII!
EUC-KR은 확장 유닉스 코드 한글(EUC-KR)로, "한국어를 인코딩"하기 위한 방식입니다.
주로 한국어 웹페이지와 문서에서 사용되었습니다.
text = "안녕하세요, EUC-KR!"
encoded = text.encode('euc-kr')
decoded = encoded.decode('euc-kr')
print("Encoded:", encoded)
# Encoded: b'\xbe\xc8\xb3\xe7\xc7\xcf\xbc\xbc\xbf\xe4, EUC-KR!'
print("Decoded:", decoded)
# Decoded: 안녕하세요, EUC-KR!
cp949는 마이크로소프트가 EUC-KR을 확장하여 만든 인코딩 방식으로, 더 많은 한글 문자와 특수 문자를 지원합니다.
text = "안녕하세요, cp949!"
encoded = text.encode('cp949')
decoded = encoded.decode('cp949')
print("Encoded:", encoded)
# Encoded: b'\xbe\xc8\xb3\xe7\xc7\xcf\xbc\xbc\xbf\xe4, EUC-KR!'
print("Decoded:", decoded)
# Decoded: 안녕하세요, EUC-KR!
유니코드는 전 세계의 모든 문자를 일관되게 표현하기 위해 설계된 문자 인코딩 표준입니다. 각 문자는 고유한 코드 포인트를 가집니다.
text = "Hello, Unicode! 안녕하세요, 유니코드!"
encoded = text.encode('utf-8')
decoded = encoded.decode('utf-8')
print("Encoded:", encoded)
# Encoded: b'Hello, Unicode! \xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94, \xec\x9c\xa0\xeb\x8b\x88\xec\xbd\x94\xeb\x93\x9c!'
print("Decoded:", decoded)
# Decoded: Hello, Unicode! 안녕하세요, 유니코드!
UTF-8은 유니코드를 효율적으로 인코딩하는 방식으로, 1바이트에서 4바이트까지 가변 길이 인코딩을 사용합니다. ASCII 문자와 호환되며, 전 세계적으로 널리 사용됩니다.
text = "Hello, UTF-8! 안녕하세요, 유니코드!"
encoded = text.encode('utf-8')
decoded = encoded.decode('utf-8')
print("Encoded:", encoded)
# Encoded: b'Hello, UTF-8! \xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94, \xec\x9c\xa0\xeb\x8b\x88\xec\xbd\x94\xeb\x93\x9c!'
print("Decoded:", decoded)
# Decoded: Hello, UTF-8! 안녕하세요, 유니코드!