본문 바로가기

etc/Common

문자열 인코딩

ASCII

- 영어 대문자, 소문자, 아라비아 숫자, 공백, 특수문자 총 128가지를 각각 000~128까지의 1byte 숫자로 표시한 문자 집합.
- 영어를 제외한 다른 언어를 표현할 수 없지만 여전히 많이 쓰임.

EUC-KR

- 한국에서 독자적으로 사용하는 문자열 인코딩.
- 표현하려는 문자 하나를 2byte를 사용하여 표현함.


ISO에서 동일한 규칙으로 모든 언어를 표현할 수 있는 문자 집합인 Unicode를 만들었는데 UTF-8,16,32가 그것.

UTF-8

- ASCII와 달리 모든 언어를 표현할 수 있음.
- 표현하려는 문자 하나를 1~6byte까지 사용하여 표현함.
- 문자 하나를 1byte를 사용하여 표현할 수 있기 때문에 ASCII와 호환됨.
- Windows, Java, Embedded를 제외한 거의 모든 환경(Linux, Network등)에서 문자열 처리 표준으로 사용됨.

UTF-16

- 표현하려는 문자 하나를 2byte 또는 4byte를 사용하여 표현.
- 문자 하나를 최소 2byte를 사용하여 표현하기 때문에 ASCII와 호환되지 않음.
- Byte order mark(BOM)을 사용한다. 즉 Little Endian(LE)인지 Big Endian(BE)인지 따져야 한다. UTF-8은 1byte단위로 글자를 변환하기 때문에 글자를 읽는 순서가 달라도 영향을 받지 않는다. 그래서 LE인지 BE인지 따질 필요가 없다.
- 0x1234를 표현하자면 UTF-16-BE: 0x12 0x34 UTF-16-LE: 0x34 0x12 이렇게 표현된다.
- Windows와 Java에서 사용됨. 멀티바이트라고 부름. Windows와 Java 내부적으로는 UTF-16을 써도 상관없지만 밖으로 내보낼 때에는 UTF-8로 인코딩해서 내보내는게 정신건강에 이로움

UTF-32

- 표현하려는 문자 하나에 4byte를 사용하여 표현.
- 잘 쓰이지 않음.