0. 소개

alt text

그거 아십니까. 유니코드라는 전 세계 문자를 표현하는 인코딩법에 한글이 17.8%나 차지 하고 있다는 것을, 그리고 우리나라가 유니코드 초창기에 개 깽판을 쳤다는 것을. 이 글은 그 이야기를 소개하는 글 입니다.

1. 글자 인코딩

alt text

나이가 많은 사람 들은 기억을 할 것이다. 예전에 인터넷 서핑을 하다보면, 가끔 어떤 사이트에서 글자가 깨지는 경우가 있었다.

alt text

이 경우 인코딩을 자동으로 “한국어"로 바꿔 주어야 제대로 볼 수 있었다. 나도 어찌 알았는 지 모르지만 초등학교 때 이렇게 했다.

사실 인터넷은 글자를 보내지 않는다. 숫자를 보낸다. 근데 위 문장, 졸라 AI 스럽네.

아무튼 중요한 점은 이 숫자를 어떻게 문자로 바꾼다는 거냐는데, 옛날 사람들은 완전히 멘탈이 나가 버렸습니다. 미국놈들은 7-비트, 즉 0에서 127까지의 숫자에 문자를 대입했거든요. 이걸 아스키, ASCII라고 합니다. 정확히 말하면 첫 32번이랑 마지막 127은 컨트롤 코드라고 해서 뭐 그렇게 중요한건 아니에요. 그냥 대충 18번은 취소를 의미해서 18번을 프로그램에 보내면 프로그램이 멈추고 뭐 이런거에요.

이제 32번은 느낌표(!)고, 48번은 숫자 0이고 등등 인거에요. 졸라게 간편합니다. 거의 모든 나라가 쓰게 되죠. 근데 이게 알파벳만 되니까 우리나라도 숫자<->문자 변환법을 만들어야되요. 만들어야 되는데 아스키는 정말 전세계 모든 나라에서 다 쓰니까, 그건 유지해야되요.

2. EUC-KR

근데 말입니다. 아스키는 7-비트인데 컴퓨터는 8-비트 단위잖아요? 원래는 그 남은 한 비트를 에러 교정에 썼어요 (parity bit) 근데, 아깝잖아요? 그래서 확장 아스키라는게 있습니다.

alt text

대충 128번 이후 255까지 뭐 라틴 계열 문자 넣고 지랄을 하는거에요. 다시 말해, 이진법으로 표현하면

0XXX XXXX <-- 아스키  
1XXX XXXX <-- 개지랄

이제 우리도 비슷한 방법으로 할 수 있잖아요, 근데 이 개지랄 128칸은 뭐 넣고 싶은게 많은 데 넣을수가 없어요. 한글도 넣고 한자도 넣고, 물리 공부 해야되니까 엡실론 델타 이딴 것도 넣어야 되는데, 그래서 이런 방법을 씁니다.

만약 문서가 왔는데 이런 식으로 온다.

0XXX XXXX <-- 아스키  
1XXX XXXX <-- 개지랄  
1XXX XXXX <-- 개지랄  
0XXX XXXX <-- 아스키

그럼 0으로 시작하는 놈들은 그냥 아스키대로 하고, 개지랄 두 개를 묶어 버립니다. 그럼 128x128의 경우의 수가 생기니까, 16,384나 쓸 수 있네요?

근데 시발 아님

왜냐, 위에 컨트롤 코드 있잖아요? 않이 원래 뭐 0번이면

0000 0000 <-- 컨트롤 코드임.   
1000 0000 <-- 컨트롤 코드아님

이래야 되는 데 존나 귀찮아서 대충 코딩 짠 프로그램들이

X000 0000 <-- 컨트롤 코드임. 아몰랑 첫번째 숫자가 뭐든 알빠노

이 지랄을 한 시스템이 존나 많아서 어쩔 수 없이 컨트롤 코드 34개 빼고 (128-34)^2 = 8836개, 절반으로 줄었어요 시발.

아무튼 우리나라 최고 엘리트 집단. 평범함을 정의하는 무시무시한 최고 권력 집단 (아님) 표준이 무엇인가 정의하는 국가기술표준원이 그 8836개의 공간을 어떻게하면 알뜰살뜰하게 써먹을까 (아님) 잘 결정을 했어요.

일단 인터넷 페이지를 생각해보면, 전부 한글, 영어만 들어가지는 않잖아요. 뭐 일본 관련 내용이면 한글+가타카나도 들어가야되고 한자도 들어가야되고, 수학 문제집을 만든다하면 수학 기호, 특수문자도 좀 넣어주고, ㅁ+(한자)키 누르면 나오는 것들 다 넣어주고 일본어만 넣냐? 러시아어 키릴문자도 넣어주고 알뜰살뜰(아님)하게 넣어줍니다.

특수 문자 435자
숫자 30자
한글 낱자 94자
기본 로마 문자 52자
그리스 문자 48자
괘선 조각 68자
한글 글자 마디 2,350자
한자 4,888자
확장 로마 문자 27자
가나 문자 169자
키릴 문자 66자

예를 들면 그리스어 문자를 넣는다 하면, 정렬충이여서 그런가

alt text

몇개 공간을 그냥 버려 버리네요. 뭐 사실 이유는 있겠죠, 정렬되면 대소문자 변환이 쉬우니까.

alt text

괘선 조각도 보시면 그냥 통으로 남은건 날려버리네요.

머 기호도 넣어줍니다. 근데 솔직히 밀리그램 한 글자 짜리 ㎎ 이걸로 쓰는 사람 있습니까? 그냥 다 mg 이렇게 쓰지.

매우 똑똑하신 표준화기구 아저씨들이 한글 문자 딱 2350개를 정해주셨네요. 한자도 딱 정해줬는데 그건 알빠노고, 한글 조합이 얼마나 많은데 2350개만 딱 정해 주셨을까요. 그래도 쀍 같은거 말고 순우리말에 쓰이는 것만 딱 모아서 2350개를 만들어주셨겠지요?

표준 한글이 초성 19자, 중성 21자, 종성 28자 = 19 × 21 × 28 = 11172개니까요.

가 각 간 갇 갈 갉 갊 감 갑 값 갓 갔 강 갖 갗 같 갚 갛 개 객 갠 갤 갬 갭 갯 갰 갱 갸 갹 갼 걀 걋 걍 걔 걘 걜 거 걱 건 걷 걸 걺 검 겁 것 겄 겅 겆 겉 겊 겋 게 겐 겔 겜 겝 겟 겠 겡 겨 격 겪 견 겯 결 겸 겹 겻 겼 경 곁 계 곈 곌 곕 곗 고 곡 곤 곧 골 곪 곬 곯 곰 곱 곳 공 곶 과 곽 관 괄 괆 괌 괍 괏 광 괘 괜 괠 괩 괬 괭 괴 괵 괸 괼 굄 굅 굇 굉 교 굔 굘 굡 굣 구 국 군 굳 굴 굵 굶 굻 굼 굽 굿 궁 궂 궈 궉 권 궐 궜 궝 궤 궷 귀 귁 귄 귈 귐 귑 귓 규 균 귤 그 극 근 귿 글 긁 금 급 긋 긍 긔 기 긱 긴 긷 길 긺 김 깁 깃 깅 깆 깊 까 깍 깎 깐 깔 깖 깜 깝 깟 깠 깡 깥 깨 깩 깬 깰 깸 깹 깻 깼 깽 꺄 꺅 꺌 꺼 꺽 꺾 껀 껄 껌 껍 껏 껐 껑 께 껙 껜 껨 껫 껭 껴 껸 껼 꼇 꼈 꼍 꼐 꼬 꼭 꼰 꼲 꼴 꼼 꼽 꼿 꽁 꽂 꽃 꽈 꽉 꽐 꽜 꽝 꽤 꽥 꽹 꾀 꾄 꾈 꾐 꾑 꾕 꾜 꾸 꾹 꾼 꿀 꿇 꿈 꿉 꿋 꿍 꿎 꿔 꿜 꿨 꿩 꿰 꿱 꿴 꿸 뀀 뀁 뀄 뀌 뀐 뀔 뀜 뀝 뀨 끄 끅 끈 끊 끌 끎 끓 끔 끕 끗 끙 끝 끼 끽 낀 낄 낌 낍 낏 낑 나 낙 낚 난 낟 날 낡 낢 남 납 낫 났 낭 낮 낯 낱 낳 내 낵 낸 낼 냄 냅 냇 냈 냉 냐 냑 냔 냘 냠 냥 너 넉 넋 넌 널 넒 넓 넘 넙 넛 넜 넝 넣 네 넥 넨 넬 넴 넵 넷 넸 넹 녀 녁 년 녈 념 녑 녔 녕 녘 녜 녠 노 녹 논 놀 놂 놈 놉 놋 농 높 놓 놔 놘 놜 놨 뇌 뇐 뇔 뇜 뇝 뇟 뇨 뇩 뇬 뇰 뇹 뇻 뇽 누 눅 눈 눋 눌 눔 눕 눗 눙 눠 눴 눼 뉘 뉜 뉠 뉨 뉩 뉴 뉵 뉼 늄 늅 늉 느 늑 는 늘 늙 늚 늠 늡 늣 능 늦 늪 늬 늰 늴 니 닉 닌 닐 닒 님 닙 닛 닝 닢 다 닥 닦 단 닫 달 닭 닮 닯 닳 담 답 닷 닸 당 닺 닻 닿 대 댁 댄 댈 댐 댑 댓 댔 댕 댜 더 덕 덖 던 덛 덜 덞 덟 덤 덥 덧 덩 덫 덮 데 덱 덴 델 뎀 뎁 뎃 뎄 뎅 뎌 뎐 뎔 뎠 뎡 뎨 뎬 도 독 돈 돋 돌 돎 돐 돔 돕 돗 동 돛 돝 돠 돤 돨 돼 됐 되 된 될 됨 됩 됫 됴 두 둑 둔 둘 둠 둡 둣 둥 둬 뒀 뒈 뒝 뒤 뒨 뒬 뒵 뒷 뒹 듀 듄 듈 듐 듕 드 득 든 듣 들 듦 듬 듭 듯 등 듸 디 딕 딘 딛 딜 딤 딥 딧 딨 딩 딪 따 딱 딴 딸 땀 땁 땃 땄 땅 땋 때 땍 땐 땔 땜 땝 땟 땠 땡 떠 떡 떤 떨 떪 떫 떰 떱 떳 떴 떵 떻 떼 떽 뗀 뗄 뗌 뗍 뗏 뗐 뗑 뗘 뗬 또 똑 똔 똘 똥 똬 똴 뙈 뙤 뙨 뚜 뚝 뚠 뚤 뚫 뚬 뚱 뛔 뛰 뛴 뛸 뜀 뜁 뜅 뜨 뜩 뜬 뜯 뜰 뜸 뜹 뜻 띄 띈 띌 띔 띕 띠 띤 띨 띰 띱 띳 띵 라 락 란 랄 람 랍 랏 랐 랑 랒 랖 랗 래 랙 랜 랠 램 랩 랫 랬 랭 랴 략 랸 럇 량 러 럭 런 럴 럼 럽 럿 렀 렁 렇 레 렉 렌 렐 렘 렙 렛 렝 려 력 련 렬 렴 렵 렷 렸 령 례 롄 롑 롓 로 록 론 롤 롬 롭 롯 롱 롸 롼 뢍 뢨 뢰 뢴 뢸 룀 룁 룃 룅 료 룐 룔 룝 룟 룡 루 룩 룬 룰 룸 룹 룻 룽 뤄 뤘 뤠 뤼 뤽 륀 륄 륌 륏 륑 류 륙 륜 률 륨 륩 륫 륭 르 륵 른 를 름 릅 릇 릉 릊 릍 릎 리 릭 린 릴 림 립 릿 링 마 막 만 많 맏 말 맑 맒 맘 맙 맛 망 맞 맡 맣 매 맥 맨 맬 맴 맵 맷 맸 맹 맺 먀 먁 먈 먕 머 먹 먼 멀 멂 멈 멉 멋 멍 멎 멓 메 멕 멘 멜 멤 멥 멧 멨 멩 며 멱 면 멸 몃 몄 명 몇 몌 모 목 몫 몬 몰 몲 몸 몹 못 몽 뫄 뫈 뫘 뫙 뫼 묀 묄 묍 묏 묑 묘 묜 묠 묩 묫 무 묵 묶 문 묻 물 묽 묾 뭄 뭅 뭇 뭉 뭍 뭏 뭐 뭔 뭘 뭡 뭣 뭬 뮈 뮌 뮐 뮤 뮨 뮬 뮴 뮷 므 믄 믈 믐 믓 미 믹 민 믿 밀 밂 밈 밉 밋 밌 밍 및 밑 바 박 밖 밗 반 받 발 밝 밞 밟 밤 밥 밧 방 밭 배 백 밴 밸 뱀 뱁 뱃 뱄 뱅 뱉 뱌 뱍 뱐 뱝 버 벅 번 벋 벌 벎 범 법 벗 벙 벚 베 벡 벤 벧 벨 벰 벱 벳 벴 벵 벼 벽 변 별 볍 볏 볐 병 볕 볘 볜 보 복 볶 본 볼 봄 봅 봇 봉 봐 봔 봤 봬 뵀 뵈 뵉 뵌 뵐 뵘 뵙 뵤 뵨 부 북 분 붇 불 붉 붊 붐 붑 붓 붕 붙 붚 붜 붤 붰 붸 뷔 뷕 뷘 뷜 뷩 뷰 뷴 뷸 븀 븃 븅 브 븍 븐 블 븜 븝 븟 비 빅 빈 빌 빎 빔 빕 빗 빙 빚 빛 빠 빡 빤 빨 빪 빰 빱 빳 빴 빵 빻 빼 빽 뺀 뺄 뺌 뺍 뺏 뺐 뺑 뺘 뺙 뺨 뻐 뻑 뻔 뻗 뻘 뻠 뻣 뻤 뻥 뻬 뼁 뼈 뼉 뼘 뼙 뼛 뼜 뼝 뽀 뽁 뽄 뽈 뽐 뽑 뽕 뾔 뾰 뿅 뿌 뿍 뿐 뿔 뿜 뿟 뿡 쀼 쁑 쁘 쁜 쁠 쁨 쁩 삐 삑 삔 삘 삠 삡 삣 삥 사 삭 삯 산 삳 살 삵 삶 삼 삽 삿 샀 상 샅 새 색 샌 샐 샘 샙 샛 샜 생 샤 샥 샨 샬 샴 샵 샷 샹 섀 섄 섈 섐 섕 서 석 섞 섟 선 섣 설 섦 섧 섬 섭 섯 섰 성 섶 세 섹 센 셀 셈 셉 셋 셌 셍 셔 셕 션 셜 셤 셥 셧 셨 셩 셰 셴 셸 솅 소 속 솎 손 솔 솖 솜 솝 솟 송 솥 솨 솩 솬 솰 솽 쇄 쇈 쇌 쇔 쇗 쇘 쇠 쇤 쇨 쇰 쇱 쇳 쇼 쇽 숀 숄 숌 숍 숏 숑 수 숙 순 숟 술 숨 숩 숫 숭 숯 숱 숲 숴 쉈 쉐 쉑 쉔 쉘 쉠 쉥 쉬 쉭 쉰 쉴 쉼 쉽 쉿 슁 슈 슉 슐 슘 슛 슝 스 슥 슨 슬 슭 슴 습 슷 승 시 식 신 싣 실 싫 심 십 싯 싱 싶 싸 싹 싻 싼 쌀 쌈 쌉 쌌 쌍 쌓 쌔 쌕 쌘 쌜 쌤 쌥 쌨 쌩 썅 써 썩 썬 썰 썲 썸 썹 썼 썽 쎄 쎈 쎌 쏀 쏘 쏙 쏜 쏟 쏠 쏢 쏨 쏩 쏭 쏴 쏵 쏸 쐈 쐐 쐤 쐬 쐰 쐴 쐼 쐽 쑈 쑤 쑥 쑨 쑬 쑴 쑵 쑹 쒀 쒔 쒜 쒸 쒼 쓩 쓰 쓱 쓴 쓸 쓺 쓿 씀 씁 씌 씐 씔 씜 씨 씩 씬 씰 씸 씹 씻 씽 아 악 안 앉 않 알 앍 앎 앓 암 압 앗 았 앙 앝 앞 애 액 앤 앨 앰 앱 앳 앴 앵 야 약 얀 얄 얇 얌 얍 얏 양 얕 얗 얘 얜 얠 얩 어 억 언 얹 얻 얼 얽 얾 엄 업 없 엇 었 엉 엊 엌 엎 에 엑 엔 엘 엠 엡 엣 엥 여 역 엮 연 열 엶 엷 염 엽 엾 엿 였 영 옅 옆 옇 예 옌 옐 옘 옙 옛 옜 오 옥 온 올 옭 옮 옰 옳 옴 옵 옷 옹 옻 와 왁 완 왈 왐 왑 왓 왔 왕 왜 왝 왠 왬 왯 왱 외 왹 왼 욀 욈 욉 욋 욍 요 욕 욘 욜 욤 욥 욧 용 우 욱 운 울 욹 욺 움 웁 웃 웅 워 웍 원 월 웜 웝 웠 웡 웨 웩 웬 웰 웸 웹 웽 위 윅 윈 윌 윔 윕 윗 윙 유 육 윤 율 윰 윱 윳 융 윷 으 윽 은 을 읊 음 읍 읏 응 읒 읓 읔 읕 읖 읗 의 읜 읠 읨 읫 이 익 인 일 읽 읾 잃 임 입 잇 있 잉 잊 잎 자 작 잔 잖 잗 잘 잚 잠 잡 잣 잤 장 잦 재 잭 잰 잴 잼 잽 잿 쟀 쟁 쟈 쟉 쟌 쟎 쟐 쟘 쟝 쟤 쟨 쟬 저 적 전 절 젊 점 접 젓 정 젖 제 젝 젠 젤 젬 젭 젯 젱 져 젼 졀 졈 졉 졌 졍 졔 조 족 존 졸 졺 좀 좁 좃 종 좆 좇 좋 좌 좍 좔 좝 좟 좡 좨 좼 좽 죄 죈 죌 죔 죕 죗 죙 죠 죡 죤 죵 주 죽 준 줄 줅 줆 줌 줍 줏 중 줘 줬 줴 쥐 쥑 쥔 쥘 쥠 쥡 쥣 쥬 쥰 쥴 쥼 즈 즉 즌 즐 즘 즙 즛 증 지 직 진 짇 질 짊 짐 집 짓 징 짖 짙 짚 짜 짝 짠 짢 짤 짧 짬 짭 짯 짰 짱 째 짹 짼 쨀 쨈 쨉 쨋 쨌 쨍 쨔 쨘 쨩 쩌 쩍 쩐 쩔 쩜 쩝 쩟 쩠 쩡 쩨 쩽 쪄 쪘 쪼 쪽 쫀 쫄 쫌 쫍 쫏 쫑 쫓 쫘 쫙 쫠 쫬 쫴 쬈 쬐 쬔 쬘 쬠 쬡 쭁 쭈 쭉 쭌 쭐 쭘 쭙 쭝 쭤 쭸 쭹 쮜 쮸 쯔 쯤 쯧 쯩 찌 찍 찐 찔 찜 찝 찡 찢 찧 차 착 찬 찮 찰 참 찹 찻 찼 창 찾 채 책 챈 챌 챔 챕 챗 챘 챙 챠 챤 챦 챨 챰 챵 처 척 천 철 첨 첩 첫 첬 청 체 첵 첸 첼 쳄 쳅 쳇 쳉 쳐 쳔 쳤 쳬 쳰 촁 초 촉 촌 촐 촘 촙 촛 총 촤 촨 촬 촹 최 쵠 쵤 쵬 쵭 쵯 쵱 쵸 춈 추 축 춘 출 춤 춥 춧 충 춰 췄 췌 췐 취 췬 췰 췸 췹 췻 췽 츄 츈 츌 츔 츙 츠 측 츤 츨 츰 츱 츳 층 치 칙 친 칟 칠 칡 침 칩 칫 칭 카 칵 칸 칼 캄 캅 캇 캉 캐 캑 캔 캘 캠 캡 캣 캤 캥 캬 캭 컁 커 컥 컨 컫 컬 컴 컵 컷 컸 컹 케 켁 켄 켈 켐 켑 켓 켕 켜 켠 켤 켬 켭 켯 켰 켱 켸 코 콕 콘 콜 콤 콥 콧 콩 콰 콱 콴 콸 쾀 쾅 쾌 쾡 쾨 쾰 쿄 쿠 쿡 쿤 쿨 쿰 쿱 쿳 쿵 쿼 퀀 퀄 퀑 퀘 퀭 퀴 퀵 퀸 퀼 큄 큅 큇 큉 큐 큔 큘 큠 크 큭 큰 클 큼 큽 킁 키 킥 킨 킬 킴 킵 킷 킹 타 탁 탄 탈 탉 탐 탑 탓 탔 탕 태 택 탠 탤 탬 탭 탯 탰 탱 탸 턍 터 턱 턴 털 턺 텀 텁 텃 텄 텅 테 텍 텐 텔 템 텝 텟 텡 텨 텬 텼 톄 톈 토 톡 톤 톨 톰 톱 톳 통 톺 톼 퇀 퇘 퇴 퇸 툇 툉 툐 투 툭 툰 툴 툼 툽 툿 퉁 퉈 퉜 퉤 튀 튁 튄 튈 튐 튑 튕 튜 튠 튤 튬 튱 트 특 튼 튿 틀 틂 틈 틉 틋 틔 틘 틜 틤 틥 티 틱 틴 틸 팀 팁 팃 팅 파 팍 팎 판 팔 팖 팜 팝 팟 팠 팡 팥 패 팩 팬 팰 팸 팹 팻 팼 팽 퍄 퍅 퍼 퍽 펀 펄 펌 펍 펏 펐 펑 페 펙 펜 펠 펨 펩 펫 펭 펴 편 펼 폄 폅 폈 평 폐 폘 폡 폣 포 폭 폰 폴 폼 폽 폿 퐁 퐈 퐝 푀 푄 표 푠 푤 푭 푯 푸 푹 푼 푿 풀 풂 품 풉 풋 풍 풔 풩 퓌 퓐 퓔 퓜 퓟 퓨 퓬 퓰 퓸 퓻 퓽 프 픈 플 픔 픕 픗 피 픽 핀 필 핌 핍 핏 핑 하 학 한 할 핥 함 합 핫 항 해 핵 핸 핼 햄 햅 햇 했 행 햐 향 허 헉 헌 헐 헒 험 헙 헛 헝 헤 헥 헨 헬 헴 헵 헷 헹 혀 혁 현 혈 혐 협 혓 혔 형 혜 혠 혤 혭 호 혹 혼 홀 홅 홈 홉 홋 홍 홑 화 확 환 활 홧 황 홰 홱 홴 횃 횅 회 획 횐 횔 횝 횟 횡 효 횬 횰 횹 횻 후 훅 훈 훌 훑 훔 훗 훙 훠 훤 훨 훰 훵 훼 훽 휀 휄 휑 휘 휙 휜 휠 휨 휩 휫 휭 휴 휵 휸 휼 흄 흇 흉 흐 흑 흔 흖 흗 흘 흙 흠 흡 흣 흥 흩 희 흰 흴 흼 흽 힁 히 힉 힌 힐 힘 힙 힛 힝

응 아니야~

됭경모치라는 물고기 이름의 이 표현이 안된다든가, ‘으쌰으쌰’가 ‘으?으?‘으로 표기되는 등, 뭐 이런 저런 문제가 있었긴 한데, 외국 발음 표기할때도 문제가 좀 있었고 했다.

물론 똑똑하신 분들이 나머지 11172-2350=8822에 대해서 쓸 수 있는 채움문자 방식을 서술했는 데, 귀찮아서 그거 안 짠 프로그램이 한 트럭이였음. 뭐 KS X 1002라고 해서 1930자 정도 추가한게 있는데 실제로 쓴 인코딩이 없어서 그냥 사라짐. 참고로 이 2350자를 완성형 한글이라고도 부른다.

CP949

킹갓 윈도우는 자체적으로 한글 인코딩을 만들었는 데, 그냥 나머지 바이트 부분에 8822개를 때려박았다.

원래라면

0XXX XXXX <-- 아스키  
1XXX XXXX <--   한  
1XXX XXXX <--   글 
0XXX XXXX <-- 아스키

이랬는데 생각해보니 시작이 1이면 다음 바이트는 0이여도 된다

0XXX XXXX <-- 아스키  
1XXX XXXX <--   한  
1XXX XXXX <--   글 
0XXX XXXX <-- 아스키
0XXX XXXX <-- 아스키
1XXX XXXX <-- ???????이새끼 머꼬
0XXX XXXX <-- ???????왜 1로시작하는데 다음 바이트는 0이누

1XXX XXXX
0XXX XXXX

부분을 사용해서 나머지 한글을 다 때려 박았다. 참고로 처음에 말했던 컨트롤 뭐시기는 그냥 다 알빠노 날려버림.

alt text

도식으로 표현하면 노랑이는 아스키여서 넘어가고, 파랑이가 이제 2바이트 둘다 1로 시작하는 비-컨트롤 영역이면, 핑크가 나머지 한글이다. 참고로 핑크와 노랑 사이에 1줄 정도 빈칸이 있는 데 정확히는 모르지만 PUA일지도? 그리고 핑크가 3칸으로 나뉜게, 2째 바이트가 로마자 대문자, 소문자, 그리고 129…254까지로 잡기위해 그렇게 했다고 한다. 왠진 모르겠음. 아마 다른 숫자나 특수문자에 겹치면 좀 귀찮은 상황이 생기나?

유니코드와 “Korean mess”

컴공놈들이 가장 좋아하는 두 가지가 있다. 통합과 하위 호환.

사실 유니코드는 졸라 예전부터 있었는 데, 뭐 아무도 안쓴 버전 1부터 우리의 자랑스러운 완성형 문자 2350을 넣어줬다. 그리고 1993년 2년 뒤, 유니코드 1.1에서 개병신짓을 했는데, 아무도 안쓰던 KS X 1002 1930자를 넣어줬다. 이게 하위 호환도 생각해야 되니까 순서를 맞춰서 넣은건 아니고 뒤에 어따가 넣었다. 그리고 중국 조선족 자치구에서 만든 ‘GB 12052-89’(표준한글 3,373개)의 문자 6개도 넣었다. 믃혻뽙뿥쮔웘 인데 왜 이거 6개만 넣었는지는 모르겠다. 아마 겹치는거 빼고 나머지 6개인듯?

아무튼 그 다음 진짜 찐 개 병신짓을 했는데, 여기에 추가로 2,370개를 넣어줬는데, 어떻게 넣어줬냐면, 그냥 가나다 순으로 남은거 2,370개를 넣었다. 자주 쓰는 나머지 글자도 아니고 그냥 부터 까지. 뭔 미친새끼들 아님?

아무튼 이 새끼들이 이제 유니코드 2.0을 만들려고 한다. 이제 나머지 4,516를 그냥 뒤에 끼워넣으려고하는데, 한국 대표단이 갈! “개 지랄 마세요"라고 하면서 조온나게 싸웠다고 한다.

사실 무시하면 되긴 하는데 문제는 컴공놈들이 좋아하는 “통합"이다. 여기서 한국 대표단이 (한컴쪽 사람도 있었다고 함) 응 그래 너네 유니코드 써, 우린 우리 규격 쓸꺼야~~. 라고 하게 된다면, 원대한 통합 문자 정보 규격이 망하게 되니 어쩔 수 없이 넘어갔다고 한다. 재밌는 게, 유니코드 컨소시엄 쪽 문서를 보면 “유니코드 1.1 버전으로 한국어쓰는 프로그램이 거의 없다고 판단했습니다"라는 말이 써있는데 사실 맞는 말이긴 했다.

뭐 말은 많지만 결국 한글이 순서대로 배열되는게 편하고 어쩌구 저쩌구라는 이유였다. 그래서 결과적으로 유니코드 버전 1.1에서 버전 2.0이 하위호환이 안되는 이유는 한글때문이라는거~~. (유일하게 비슷한 경우가 티벳 문자도 1.0에서 1.1로 가면서 삭제되었다가 2.0에 다른 위치로 다시 추가 되었다)

이후로 2.0에서 더이상 문자의 위치 이동은 안된다고 조항을 땅땅땅 때려넣었는 데, 이게 꼭 그렇지는 않다고 한다만 뭐 어쩌겠어요.

출처:
https://j.mearie.org/post/155446739768/cjk-strangeness-in-unicode
말고 더 있는데 까먹음. 머 대충 나무위키, 위키백과, 유니코드 이메일 기록, 산업표준어쩌구 문서함 등등 확인함.

유니코드 쪽이 참 재밌는 이야기가 많은 데, 사실 내 전문 분야도 아니지만 이모지 쪽도 이야기해보고 싶다.