개발
문자 Encoding
데이비드윤
2024. 4. 30. 13:14
- UTF-8 (유니코드 변환 형식 - 8비트): 가장 널리 사용되는 문자 인코딩 방식 중 하나로, 다국어 문자를 지원하며 ASCII 문자와 호환됩니다. 파일 및 텍스트 처리에 주로 사용됩니다.
- UTF-16 (유니코드 변환 형식 - 16비트): 모든 유니코드 문자를 나타내기 위해 16비트 인코딩을 사용하는 방식입니다. 크기가 크고 다국어 지원이 가능하지만, 일부 애플리케이션에서는 자원 소모가 높을 수 있습니다.
- ANSI (Windows-1252 등): 이전 버전의 Windows에서 많이 사용되었던 인코딩 방식입니다. 영어와 일부 유럽 언어의 문자를 지원하며, 현재는 주로 호환성을 위해 사용됩니다.
- EUC-KR (Extended Unix Code-KR): 한국어 문자 인코딩 방식으로, 한글과 영문을 지원합니다. 한국에서 사용되는 Windows 시스템에서 많이 사용되었지만, 최신 버전의 Windows에서는 UTF-8이 더 권장됩니다.
- CP949: 한국어 문자 인코딩 방식 중 하나로, EUC-KR을 확장한 형식입니다. 과거에 한국어 윈도우 시스템에서 널리 사용되었습니다.
문자 인코딩 차이점
- EUC-KR
- 완성된 단어가 있어야만 표현이 된다.
- 완성된 문자가 없을 경우 한글이 깨져 보일 수 있다.
- UTF-8
- 모음 자음으로 나누어져서 조합을 통해 글자가 완성되어 표현된다
정리
Unicode
- 특정 encoding을 나타내는 말이 아니다.
- 순서와 문자를 1:1로 매핑해놓은 하나의 코드표이다.
- ANSI(영어와 일부 유럽 언어)와 달리 전 세계 글자를 하나의 코드표에 표현하기 위해 만들어졌다.
- Unicode 코드표 안에 전 세계 글자가 모두 들어있다.
UTF
- Unicode Transformation Format
- 유니코드 문자표를 보고 문자를 bytes로 변환하는 Encoding 방식
- (U+C548, 안) 이라는 문자가 있을 때, 이 문자를 어떤 바이트로 변환할 것인가를 결정하는 것이 UTF-8, UTF-16 등의 encoding이다.
- UTF-8 경우 0xc9588, UTF-16의 경우 0xc548로 변환
UTF-8
- 한 문자를 나타내는데 1~4 bytes를 사용하는 가변 길이 인코딩 방식(Variable-width encoding)
- ASCII range인 U+007F(127)까지는 1 byte만 사용해서 표현
- U+0080 부터는 2bytes를 사용해서 표현하는데, 상위 1byte는 0xc2부터 사용하고 0x80~0xbf를 하위 1byte로 사용해서 원래 1 byte인 0x00~0x7f와 구분할 수 있도록 했다.
- 따라서 0x80~0xbf는 단독으로 쓰이지 않는다.
UTF-16
- 한 문자를 나타내는데 2 or 4 bytes를 사용하는 가변 길이 인코딩 방식
ANSI
- the default local/codepage for my system
- ANSI는 각 CodePage마다 코드표가 따로 있다.
- 예를 들어 EUC-KR과 CP949가 바로 한글에 대응되는 CodePage이다.
- 즉 ANSI 형식의 인코딩은 Unicode 코드표를 사용하는 것이 아니라 각 언어에 따른 별도의 코드표를 사용한다
- 메모장에서 ANSI를 선택하면 CP949로 인코딩된다.
EUC-KR
- ASCII range는 1byte, 한글은 2bytes로 표현하는 가변 길이 인코딩 방식
CP949