Pages

2014년 6월 10일 화요일

[기타] UTF-8 과 UTF-16

  1. 유니코드 : 모든 문자에 코드를 부여해 놓은 것을 말합니다. 계속 순서대로 코드를 붙여 나가니 미래에 등장할 글자에도 나중에 코드를 부여하면 그냥 ok죠. UTF-8과 UTF-16은 이 유니코드를 실제로 어떤 방식으로 표현할 지에 대한 인코딩 방법의 이름.
  2. UTF-8 : 가변 바이트 방식인데 유니코드에서 ASCII에 해당하는 문자는 1바이트, 그 이후의 문자는 2바이트~4바이트로 표현. 마지막 바이트가 아닌 바이트들의 최상위 비트는 항상 1이 되며, 문자 바이트 길이가 2바이트, 3바이트, 4바이트냐에 따라 각각 첫번째 바이트의 최초 비트가 110, 1110, 11110으로 설정되므로 문자의 바이트 종료를 파악할 수 있다.
    • 장점 : ASCII와 잘 호환됨. C 같은 Null-terminated 문자열에도 적합함.
    • 단점 : 인코딩/디코딩에 시간이 아무래도 더 걸림. 문자열 길이 파악이 어려움. 한글 같은 경우 3바이트라 바이트 낭비가 많음.
  3. UTF-16 : 문자 하나를 무조건 2바이트로 표시하며 2바이트 범위 내에 들어가지 않는 문자는 4바이트로 표시한다.
    • 장점 : 길이가 거의 고정이므로(많이 쓰는 글자들은 거의 2바이트 범위 내) 처리하기가 편하고 빠름.
    • 단점 : ASCII와 호환이 안 되므로 개발시 불편한 경우가 많음. 영어도 무조건 2바이트라 바이트 낭비가 생길 수 있으며 알파벳의 상위 바이트는 무조건 0(null)이 되어버리니 C같은 경우 일반적인 char *로 문자열 처리가 힘듬(그래서 wchar 같은 타입 사용).

댓글 없음:

댓글 쓰기