작성일자 : 2024-08-31
Ver 0.1.1
0. 배경
Python, SQL 활용해 업무를 하거나 공부를 할때 한글 데이터를 다루는 일은 매우 빈번하다.
이럴 때 늘 UTF-8과 EUC-KR 인코딩 방식을 사용하게 되는데, 둘 중 어떤 방법을 사용해야하는 지는 늘 이렇게 해야한다라는 방법만 알고 적용하고 넘어가지 이 둘의 자세한 내용과 차이에 대해서는 알아보지 않고 넘어 갔던거 같다.
그래서 이번 글에서는 EUC-KR과 UTF-8 인코딩 방식의 특징과 차이에 대해서 정리해보려고 한다.
1. 2진수와 16진수
글을 읽다보면 진법과 바이트(Byte)에 대한 개념이 나오는데, 해당 개념과 관련된 내용으로 아래의 게시물을 참고하길 바란다.
컴퓨터는 모든 데이터와 명령을 2진수로 처리한다.
0 또는 1의 한자리 2 진수 정보를 저장할 수 있는 단위를 비트(bit) 라고 하며, 1비트의 저장 공간으로는 두 가지 기호 밖에 구분할 수 없다.
1 바이트로 나타낼 수 있는 기호의 개수는 2의 8승 즉, 256개이다.
컴퓨터가 사용하는 2진수로 값을 표현하면 자릿수가 길어 쓰기와 읽기가 불편하기에 컴퓨터의 값을 표현할 때는 2진수 대신 16진수를 많이 쓴다.
2. 인코딩의 기본 정의
인코딩(Encoding)은 데이터를 특정 형식으로 변환하는 과정이다.
컴퓨터에서는 문자, 숫자, 이미지 등의 다양한 데이터를 0과 1로 이루어진 이진수 형태로 변환하여 저장하거나 전송하는데, 이때 사용되는 규칙이나 표준을 인코딩이라고 한다.
인코딩은 데이터가 서로 다른 시스템이나 프로그램 간에 정확하게 전달되고 이해될 수 있도록 하는 데 필수적이다.
3. EUC-KR
EUC-KR(Extended Unix Code for Korean)은 한국어를 표현하기 위해 사용되는 문자 인코딩 방식이다.
주로 한국어 운영체제와 프로그램에서 사용되된다. EUC-KR은 한글 문자뿐만 아니라 한자, 특수 문자 등도 포함하고 있다.
- 특징
- EUC-KR은 ASCII 문자(영어)와 한국어(한글)를 동시에 지원
- 한글은 두 바이트로 인코딩되며, EUC-KR은 최대 94개의 한글 조합을 지원
- 대부분의 한국어 웹사이트와 프로그램에서 사용되었으나, 현재는 UTF-8로 대체되는 추세
4. UTF-8
UTF-8(8-bit Unicode Transformation Format)은 유니코드(Unicode) 문자 인코딩 방식 중 하나이다.
유니코드는 전 세계의 모든 문자와 기호를 통합하여 표준화한 문자 세트이며, UTF-8은 유니코드 문자를 8비트(1바이트) 단위로 가변 길이로 인코딩한다.
- 특징
- UTF-8은 ASCII와의 호환성을 유지한다. 즉, 영어와 같은 ASCII 문자는 1바이트로 표현
- 유니코드의 모든 문자를 표현할 수 있으며, 한글은 3바이트로 인코딩
- 웹 표준으로 널리 사용되고 있으며, 다양한 언어와 문자를 동시에 표현할 수 있다.
5. EUC-KR과 UTF-8의 차이
- 문자 범위:
- EUC-KR은 한국어와 일부 한자를 표현하는 데 최적화된 반면, UTF-8은 전 세계 모든 문자를 지원
- 인코딩 방식:
- EUC-KR은 한글을 2바이트로 인코딩하지만, UTF-8은 가변 길이 인코딩을 사용하여 한글을 3바이트로 표현
- 호환성:
- UTF-8은 다양한 언어와 플랫폼 간의 호환성이 높으며, 전 세계적으로 사용되고 있다. 반면 EUC-KR은 한국어에 특화되어 있고, 국제적인 호환성은 떨어진다.
- 용량:
- 같은 한글 문서를 저장할 때, EUC-KR은 UTF-8보다 적은 용량을 차지할 수 있다. 그러나 UTF-8은 다양한 언어를 동시에 지원해야 하는 환경에서 더 효율적
6. 요약
EUC-KR은 한국어를 주로 사용하는 환경에서 사용되었으나, UTF-8은 전 세계 모든 문자를 표현할 수 있는 범용적인 인코딩 방식으로, 현재 대부분의 웹과 시스템에서 표준으로 채택되고 있다.