상한선은 1.5배입니다. 즉 50% 이상 늘어 나지 않습니다. 이렇게 되는 이유는 euc-kr(cp949도 포함)에 들어 있는 모든 문자들이 모두 BMP(Basic Multilingual Plane, U+0000..FFFF) 안에 있기 때문입니다. (더군다나 U+007F 윗쪽의 모든 문자들은 euc-kr에서 2바이트입니다.) 물론 다 확인하는 것보다 대략의 상한선을 잡는 것이 더 빠르기 때문에 저렇게 하는 것이겠지만요.
유니코드는 현재 17개의 plane(65536개의 문자를 한꺼번에 묶어서 이르는 말)으로 이루어져 있고, 맨 첫 plane을 plane 0, 그 다음을 plane 1, ..., 마지막은 plane 16으로 부릅니다. 이 말은, 마지막 코드가 U+10FFFF라는 소리겠죠.
plane 0(U+FFFF까지)가 우리가 보통 쓰는 BMP이고, 거의 대부분의 문자 생활은 여기서 이루어진다고 보면 됩니다. BMP는 현재 95% 이상이 차 있고 몇몇 빠진 문자들에 대한 추가만 이루어지고 있습니다.
plane 1은 SMP로 일반적으로 많이 사용되지 않는 보조 문자들, 즉 역사적으로 쓰였으나 지금은 안 쓰이는 문자(Linear B 따위)나 음악 부호 같은 게 들어 갑니다. 아직 빈 부분이 엄청나게 많은데 아마 앞으로 가장 활발하게 문자들이 추가될 plane이 아닐까 싶습니다. -,.-
plane 2는 SIP로 ideographic character(= 한자)들만 잔뜩 모아 놓은 plane입니다. 옛날에 사용되던 한자 같은 것들이 마구 들어 가는데 65% 정도 차 있으나 앞으로 계속 늘어 날 것 같습니다. (상황을 보아 하니 SIP2가 생길 지도...)
plane 14는 SSP로 특수한 목적으로 사용되는 문자들을 모아 놓습니다. 현재 여기에는 tag character(U+E0000..E007F; plane text에 언어 정보 같은 특정한 tag를 달기 위한 문자)와 variation selector 확장(U+FE00..FE0F=VS1..16, U+E0100..E01EF=VS17..256; 의미는 같은데 문자 모양 같은 것만 다른 경우를 처리하기 위하여 사용하는 특수한 문자)만 들어 있고, 앞으로 별로 추가되지 않을 것 같습니다.
plane 15, 16은 사용자 정의 영역 확장입니다.
이 뒤의 문자는 유니코드에서 유효하지 않습니다. (plane 17 같은 거 없다는 소립니다) utf-8은 RFC 나오기 전까지는 5바이트, 6바이트 인코딩을 지원해서 U+7FFFFFFF까지 지원했는데 RFC가 2003년인가에 나온 뒤로는 유니코드에 없는 U+10FFFF 바깥의 문자는 인코딩하지 못하게 해서 모든 문자를 4바이트 이하로 인코딩할 수 있게 되었습니다.
실제로 우리가 보통 쓰는 문자는 BMP 안에 다 있을 수 밖에 없기 때문에 (처음에 유니코드에 한자가 들어 간 게 레거시 인코딩을 기반으로 들어 간 게 많아서...) 그 바깥은 보통 신경 안 써도 되긴 합니다. 위에서 말한 사용자 정의 영역이나 variation selector도 BMP 안에 그 앞부분이 찔끔 들어 가 있기도 하고요. -_-;
유니코드 로드맵에 보면 앞으로 어떤 문자들이 추가될 것인지 (또는 추가해 달라는 말이 나왔는지) 볼 수 있습니다. SMP는 차고 넘치고 SSP는 까마득하네요. -_-;
영문 알파벳의 경우
영문 알파벳의 경우 1바이트 그대로고, (0~0x7f 코드까지만)
독일어 등등이 위치하는 코드는 1바이트에서 2바이트로 늘어납니다.
한글의 경우 2바이트에서 3바이트로 늘어납니다.
코드 값에 따라 늘어나는 양이 달라지지요.
대충 2배의 버퍼를 잡는 이유는 매 글자를 다 확인하는 부담을
줄이기 위해서겠죠.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
아무리 높게 잡아도...
상한선은 1.5배입니다. 즉 50% 이상 늘어 나지 않습니다. 이렇게 되는 이유는 euc-kr(cp949도 포함)에 들어 있는 모든 문자들이 모두 BMP(Basic Multilingual Plane, U+0000..FFFF) 안에 있기 때문입니다. (더군다나 U+007F 윗쪽의 모든 문자들은 euc-kr에서 2바이트입니다.) 물론 다 확인하는 것보다 대략의 상한선을 잡는 것이 더 빠르기 때문에 저렇게 하는 것이겠지만요.
- 토끼군
그렇군요.. 지금
그렇군요.. 지금 UTF-8에 관련된 정보를 위키피디아에서 보고있습니다. BMP 밖의 문자는 4바이트를 다 사용한다고 되어있는데 BMP 밖의 문자는 뭐가 있나요?
======================
BLOG : http://superkkt.com
유니코드는 현재
유니코드는 현재 17개의 plane(65536개의 문자를 한꺼번에 묶어서 이르는 말)으로 이루어져 있고, 맨 첫 plane을 plane 0, 그 다음을 plane 1, ..., 마지막은 plane 16으로 부릅니다. 이 말은, 마지막 코드가 U+10FFFF라는 소리겠죠.
실제로 우리가 보통 쓰는 문자는 BMP 안에 다 있을 수 밖에 없기 때문에 (처음에 유니코드에 한자가 들어 간 게 레거시 인코딩을 기반으로 들어 간 게 많아서...) 그 바깥은 보통 신경 안 써도 되긴 합니다. 위에서 말한 사용자 정의 영역이나 variation selector도 BMP 안에 그 앞부분이 찔끔 들어 가 있기도 하고요. -_-;
유니코드 로드맵에 보면 앞으로 어떤 문자들이 추가될 것인지 (또는 추가해 달라는 말이 나왔는지) 볼 수 있습니다. SMP는 차고 넘치고 SSP는 까마득하네요. -_-;
- 토끼군
댓글 달기