한글 인코딩 체계의 확립 문제

박영록의 이미지

리눅스를 처음 접하는 초보자에게 가장 까다로운 문제가 무엇일까요? 바로 한글 문제가 아닐까요? 요즘 배포판이 한글 환경이 충실하다고는해도 아직 문제가 많습니다. 프로그래머들에게도 한글 문제는 상당히 스트레스를 받게 만드는 문제죠. 기껏 로직을 다 만들어놓고 테스트했는데 한글로 해보니까 안되더라..이러면 어디서 인코딩을 설정해야하는지 찾기 위해 또 한참 헤매야하죠. 하루빨리 한글 인코딩 체계가 통합되고 리눅스 프로그램의 국제화가 더 완전해져서 아무런 추가 설정 없이 단지 언어를 한글로 바꾸는 작업 하나만으로 완벽하게 한글을 사용할 수 있기를 바랍니다.

그러면 과연 어떤 코드를 써야할까요? 제 생각을 말씀드리기에 앞서 제 글 내용 중에 틀린 부분이 있을 수도 있다는 것에 대해 양해를 미리 구합니다.

먼저 이런 코드의 통일이 중요한 부분은 어디일까요? 어차피 바이너리 파일은 직접 읽을 일이 많지 않고 해당 응용프로그램으로 읽게 되므로 제대로된 필터만 제공된다면 문제가 안됩니다. 문제가 되는 것은 텍스트 파일의 인코딩과 파일 시스템의 인코딩 방식이죠. 현재 윈도우에서는 텍스트 파일은 유니코드를 지원하지만 파일시스템은 KSC5601에 기반한 cp949(확장완성형이라고 불렸었죠..아마)라서 유니코드로 저장한 자바 프로그램에서 한글 파일명을 지정해서 쓰거나 하면 한글 코드가 깨져서 쓰여집니다. 변환을 해야하죠. 텍스트 문서는 비단 text/plain 뿐만 아니라 텍스트 파일에 기반한 html, xml 등의 문서가 다 포함됩니다. 웹을 통할 때도 이런 코드 호환이 중요하죠.

그럼 코드에 대해 살펴볼까요? 현재 쓰이는 코드는 아시다시피 KSC5601입니다. 리눅스에서 보통 ksc5601-1987이라는 이름으로 쓰이죠? euc-kr도 같은 코드를 가리킵니다. 정확히 말하면 KSC5601은 다소 추상적인 개념으로 사용되는 글자와 그 글자들의 순서 정도를 정의한 것이고 euc-kr이 실제 인코딩 방법을 가리키는 말이라고 합니다. 그런데, 다들 아시다시피 이 KSC5601은 완성형 코드에 기반하여 한글을 완전하게 표현하지 못한다는 한계가 있죠. 그래서 한텀, 아래아한글 등에서는 자체 조합형 코드를 사용합니다. 완성형의 탄생에 얽힌 복잡하고 짜증나는 이야기들은 다시 하고 싶지 않습니다만, 어쨋건 전 이 코드는 하루빨리 구시대의 유물로 사라져가야할 코드라고 생각합니다. 왜냐면 한글을 거의 완벽하게 표현할 수 있는 유니코드가 있으니까요.

유니코드는 현재 제가 알기로 3.0까지 나와 있는데 1.0에서는 한글이 6000여자가 포함되어서 완전하지 못했는데 2.0 이후부터는 11762자던가..암튼 모든 한글이 포함되었고 한글 자모까지 포함되어서 첫가끝 코드란 게 탄생했습니다. 완성형 방식으로도, 조합형 방식으로도 어쨋건 모든 한글을 제대로 표현할 수 있게 된 코드죠. 그리고 이 유니코드도 인코딩 방법이 두 가지가 있습니다. UTF-8과 UTF-16이 그것인데 먼저 UTF-16은 보통 일반적으로 유니코드라고 말하는 것이며 리눅스에서 ISO-10646 코드와 동일합니다.(equals는 true지만 ==는 true가 아닙니다-_-) 이는 모든 문자를 2바이트로 표현하는 코드인데 동양권에서는 아주 좋은 방법이지만 1바이트 언어권에서는 모든 문서의 용량이 2배로 늘어나게되는 것이 되죠. 반면 UTF-8은 ASCII는 1바이트로, 그 외의 문자는 2~5바이트로 표현합니다. 한글은 3바이트로 표현됩니다. 따라서, 1바이트 언어권에서는 손해가 없고(ASCII를 부분집합으로 가집니다.) 동양권에서는 용량의 1.5배 증가가 되어 다소 불리하다고 할 수 있죠. 이 UTF-8은 XML에서 기본 인코딩으로 사용되는 탓에 요즘 중요성이 커졌고 미국을 중심으로 UTF-8이 빠르게 확산되고 있죠.(걔네들은 손해볼 게 없으니까)

유니코드는 사실상 우리 한국을 위해 탄생한 거나 다름 없습니다. 그런데도 정작 한국에서는 유니코드가 외면당하고 구시대의 유물인 KSC5601이 아직까지 사실상의 표준으로 쓰이고 있습니다. 모든 파일 시스템과 텍스트 파일의 기본 인코딩이 유니코드가 된다면 프로그래머들은 얼마나 편해질까요. 그 혜택은 결국 엔드유저들에게 돌아갈 겁니다. 어쨋든 하루빨리 인코딩의 표준이 유니코드로 바뀌어야한다고 생각합니다.

그러나, 아직 문제는 있습니다. UTF-8이냐 UTF-16이냐의 문제죠. 또한 첫가끝 방식을 어떻게 활용할 것인가의 문제도 남아 있습니다.

현재 이런 문제들을 깊이 연구하고 있는 사람들이 상당수 되는 걸로 압니다. 유니코드에 직접 참여했던 사람들도 있을 꺼구요. 이런 사람들이 유니코드 관련 문서들을 많이 배포하고 확산에 앞장서야하겠죠.

제가 무식해서 틀린 부분이 꽤 있을 겁니다. 잘 아시는 분들은 그런 거 좀 지적해주시면 좋겠고, 그 외에 한글 코드에 관한 지식이 많은 분들은 이번 기회에 그런 지식을 대중을 위해 쏟아내보여주셨으면 합니다. 아울러 한글의 미래에 관한 많은 이야기들이 오고갔으면 합니다.

다만, 논의의 확산을 막기 위해 '리눅스의 한글화'쪽의 얘기보다는 '한글 인코딩 체계의 확립' 쪽으로 논의가 오갔으면 하는 바램입니다.

박영록의 이미지

앞으로의 방향에 대한 논의가 별루 없네요. 제가 기대한 건 그런 거였는데.. 아직 다들 정보가 부족한 탓도 있는 것 같고.. 역시 전문가 집단에서 이렇게 하자..하고 주장을 하고 홍보하고 문서도 배포하고 그래야되는데.. 좀 아쉽네요. 리눅스의 한글화에 관련된 논의를 배제하려하다보니 폭이 너무 좁아진 것 같기도 하고..

익명 사용자의 이미지

역시 어려움이 많지요. 이런 류의 주제를 이끌기에는 ...

익명 사용자의 이미지

한글 코드에 대해서 잘 나와있는 사이트 입니다.

http://hangeul.cs.pusan.ac.kr/hangeul/index.html

이 분이 한글 코드의 대가입니다.

익명 사용자의 이미지

크... 우리과 김경석 교수님... ^^

그럼 고운 하루..

익명 사용자의 이미지

음, 이해에 관한 간단한 질문입니다.
프로그램에서 utf-8 을 지원한다는 것이라든지.
현재 euc-kr 을 사용하고 있는 시스템을 utf-8 로 모두 바꾸려면 어떤 과정이 필요한가요?

익명 사용자의 이미지

EUC-KR -> Unicode -> UTF8

익명 사용자의 이미지

리눅스 사용의 어려움 보다는

남북한 문화이질화 해결을 위한 접근에 관해서
생각해 봐야 합니다.

박영록의 이미지

참고할 만한 사이트를 하나 소개하겠습니다. 제가 알고 있는 건 거의 다 여기서 뒤져본 것에서 나온 겁니다. 그 외에 kldp의 국봉관님의 유니코드 관련 문서를 보시면 도움이 될 겁니다.

http://camars.kaist.ac.kr/~dtkim/java/i18n.html

익명 사용자의 이미지

여기서 한가지.
한글코드에 대한 이해를 위해 정리된 사이트는 없는건가요?
저만해도 예전에 한글코드를 이해해보려고 애를 써봤지만
자료 찾기도 쉽지 않고, 찾았다해도 좀 어려운 감이 있던가
혹은 오래된 자료들이었습니다.
아무래도 한글코드의 문제점을 토론 하기 전에 사람들에게
어떤어떤 것이 있는지부터 이해시키는게 더 급할 것 같은데...

__
SOrCErEr

까비_의 이미지

http://pantheon.cis.yale.edu/~jshin/faq/index.html
이미 신정식님께서 정리해 놓은 글을 바탕으로 따라다니면 필요한 정보는 거의 얻을 수 있습니다.

http://camis.kaist.ac.kr/~jwjung/seminar/hangul-i18n/

ㄲ ㅏ ㅂ ㅣ T o D y

준호의 이미지

> ... 현재 윈도우에서는 텍스트 파일은 유니코드를 지원하지만 파일시스템은 KSC5601에 기반한 cp949(확장완성형이라고 불렸었죠..아마)라서

최근의 FAT나 NTFS에서는 유니코드로 저장됩니다.
겉으로는 CP949로 보이겠죠.

> 그럼 코드에 대해 살펴볼까요? 현재 쓰이는 코드는 아시다시피 KSC5601입니다.

KSX1001로 이름이 바뀌었습니다.

> 리눅스에서 보통 ksc5601-1987이라는 이름으로 쓰이죠?

리눅스에서는 그런 코드 이름을 쓰지 않습니다. MS제품군에서
그렇게 하고 있습니다. 그리고 정확히 말하면
ks_c_5601-1987 입니다.

> 그리고 이 유니코드도 인코딩 방법이 두 가지가 있습니다. UTF-8과 UTF-16이 그것인데 먼저 UTF-16은 보통 일반적으로 유니코드라고 말하는 것이며 리눅스에서 ISO-10646 코드와 동일합니다.

꼭 그렇지 않습니다. UCS-2의 표현법이 UTF-* 이라고
말할 수 있고, UTF-7, UTF-8, UTF-16 등이 있습니다.

ISO10646과의 관계는... KLDP에 문서가 있을 겁니다.

> (equals는 true지만 ==는 true가 아닙니다-_-) 이는 모든 문자를 2바이트로 표현하는 코드인데 동양권에서는 아주 좋은

UTF-16도 가변 코드입니다. 보통 2바이트지만 4-6바이트로
늘어날 수 있습니다.

박영록의 이미지

>최근의 FAT나 NTFS에서는 유니코드로 저장됩니다.
>겉으로는 CP949로 보이겠죠.

이게 무슨 말인지 잘 모르겠습니다. 좀 부가 설명을 해주시면 좋겠는데요.
이를테면, 자바에서
FileWriter fileWriter = new FileWriter("한글이름.txt");
fileWriter.write("텍스트");
fileWriter.flush();
fileWriter.close();

이렇게 하면 "텍스트"랑 "한글이름" 모두 UTF-8로 인코딩된 채 쓰여지는데 이걸 탐색기에서 보면 파일명인 "한글이름.txt"는 깨져보이지만 파일 내용인 "텍스트"는 잘 보입니다. 근데 소스를 cp949로 저장하고 컴파일 옵션을 euc-kr을 주면 파일내용과 파일명 모두 한글이 잘 보입니다. 그러면 ntfs나 fat에서는 cp949인코딩을 사용하는 거 아닌가요? 겉으로는 cp949로 보이는데 내부적으로는 어떻게 유니코드로 저장된다는 말인지 이해가 잘 안가네요.

그리고 ksc5601-1987은 보통 리눅스의 폰트 파일에서 인코딩을 표시할 때 저렇게 하지 않나요? kde에서 폰트의 charset 지정할 때 저 이름 쓰는 걸로 아는데..
그리고 ksx1001로 바뀌었다는 것도 무슨 말인지? IE나 자바에서 ksx1001는 인식 못하던데.. 보통 ksx1001용 폰트를 리눅스에서 쓸 때 font.alias에서 그걸 전부 ksc5601로 매핑해주지 않나요?

그리고..UTF-16이..제가 오라클 XML 애플리케이션이란 책에서 봤는데 무조건 2바이트라고 하던데요. 그 책이 틀린 건가요?

아, 그리고 질문하는 김에 하나 더 하면, UCS-2나 UCS-4 이것들과 UTF-7, UTF-8, UTF-16의 관계는 어떻게 되는 거죠? 제가 알기로 UCS가 좀더 추상적인 개념이고 UTF가 실제 구현이라는 거 같던데.. UCS-2랑 UCS-4는 어떻게 다른지도 아직 잘 모르겠음.

답변 부탁드립니다.

준호의 이미지

1. 파일시스템에 직접 저장될 때에는 유니코드로 저장됩니다(UTF-16?). 다만 윈도가 밖으로(탐색기 등)
보여줄 때에는 CP949로 보여주는 것이죠.
내부적인 저장 방식을 말하는 것입니다.

2. ksc5601-1987이 X의 글꼴 인코딩부를 나타내는 것이라면 맞습니다. 다만 그건 X에서만 쓰이는 것이라서..
kde에서 그렇게 쓴다면 글꼴 인코딩을 나타내기 위해서
쓰는 것이라면 맞겠지만 문자 인코딩을 나타내는 것이라면
좀 다릅니다.

3. ksc5601의 공식적 명칭이 KSX1001로 바뀌었다는
것입니다. IE나 자바가 모를 수도 있겠죠. 하여튼 국가
표준 명칭은 바뀌었습니다만 하위 호환이 염려스러우니까
자바같은데에서 그렇게 쉽게 바꾸지는 않을 것입니다.
ksx1001이라는 인코딩을 갖고 있는 것은 백묵글꼴밖에
없습니다. 그건 제작자의 의도이지만 실제 X에서 사용할
때에는 그런 인코딩은 인식하지 못하므로 alias를 만드는
것이죠.

4. UTF-16은 가변이 맞습니다. 다만 일반적인
UCS-2영역에서는 일치합니다. RFC2781을 보세요.

5. UCS와 UTF의 관계는 KSX1001과 EUC-KR의 관계로
보시면 됩니다. 즉 character set과 encoding의
차이입니다.

까비_의 이미지

준호 wrote...
> kde에서 그렇게 쓴다면 글꼴 인코딩을 나타내기 위해서
> 쓰는 것이라면 맞겠지만 문자 인코딩을 나타내는 것이라면
> 좀 다릅니다.

맞습니다. KDE에서 '인코딩'이란 글꼴 인코딩을 가리키고 글자 인코딩은 모두 UTF-8을 씁니다.
(적어도, KDE3에서는 UTF-8'만' 쓰도록 만들고 있습니다.)

ㄲ ㅏ ㅂ ㅣ T o D y

익명 사용자의 이미지

흠...
그렇다면 리눅스 등에서 마운트 할 때 iocharset를 유니코드 정도로
줘야하는게 아닌가요? 지금은 cp949로 주고있는 중인데...
뭔가 중간에서 변환하는게 존재하는건가요.

__
SOrCErEr

준호의 이미지

SOr wrote...
> 흠...
> 그렇다면 리눅스 등에서 마운트 할 때 iocharset를 유니코드 정도로
> 줘야하는게 아닌가요? 지금은 cp949로 주고있는 중인데...
> 뭔가 중간에서 변환하는게 존재하는건가요.

네. utf-16 <-> cp949 변환 테이블이 들어있죠.
한글 파일명을 주면 CP949로 된 파일명을 유니코드로
바꾸어 저장하고, 한글 파일을 ls할 때에는
유니코드를 CP949로 바꾸어 보여줍니다.

익명 사용자의 이미지

금방 UTF-8에 대해서 봤습니다.

보아하니 한문자를 표현하는 바이트가 멘처음 바이트에 의해 결정되는..

즉 3바이트 문자이면.. 1110XXXX 으로 첫바이트가 시작을 해야하는거죠..

기존의 완성형일경우 프로그래밍중간에 문자열로 포함될때 특수문자 '\'등과 코드가

겹친다거나 하면 오동작할우려가 있겠죠.. 하지만.. 저러한 문자열을 읽어 들이거나

포함할때 이미 특수문자 그자체로 인식하도록 처리하도록 프로그래밍 했어야지..

별로 어려운것 같지는 않은데.. 몇줄더추가정도..

그리고 UTF-8은 한글을위한 방식은아니군요.. 한글의 특징을 완전히 망각한....

차라리 11XXXXXX(초성) 10XXXXXX(중성) 10XXXXXX(종성) = 3바이트

11<-한글초성 10<- 중성표시 10 <- 종성

이런식이 더나을듯...

이러면.. 프로그램에서도 특수문자 겹치는 일도 없고 64 x 64 x 64 개의 문자도

표현하고 입출력이 완벽하게 되는 단 3바이트라는 단점

하지만.. 현제의 UTF-8도 3바이트..사용해야 한글을 표현할수 있음.. 따라서 단점도

아니네..

익명 사용자의 이미지

비교 대상의 개념이 잘못된거 같은데요.
코드나, 코딩의 표현상으로 볼려면 말씀하신 조합형으로 가야 하지만, 그 말씀은 세계의 모든 언어들이 한글을 제자
원리를 가지고 있을때 가능할 것입니다. UNICODE는 의미 그대로 모든 문자열을 중복되지 않은 단일의 코드 페이지로

가지고 표현하는 원칙으로 만들어 졌으므로 한글 코드 페이지도 그것에 일부이고 이제 문제가 되는 것은 그것의
배치 방법이겠죠. 그것에 따라서 한글 정렬도 결정될테니, 그래서 첫가끝 방식의 활용이 나왔고,

가장 쉽게, 그냥 UNI-book으로 한글을 뒤져 보세요.
사실 세계가 중복되지 않는 단일 코드 페이지를 사용할려면 어쩔수 없이 이런 방식을 취해야 할것 같은데요.

그래도 완성형 보다는 훨씬 낳을것 같아서..

익명 사용자의 이미지

제생각으론

옛날에는 거의 조합형을 많이 사용했는데 M사 윈도우가 나오면서 어거지 완성형을

사용함을 시발점으로 많은 문제가 생긴거 같은데..

일단 조합형을 보면..

2바이트 16비트 를 1(한글플래그) + 5(초성) + 5(중성) + 5(종성) = 16

이런식으로 사용을 하는데 처음 1은 한글인지 다른 문자인지를 구분하는데 사용하며

각 5비트이면 32개의 자음, 32개의 모음 을 표현할수 있습니다.

이들이 조합이 되면..최대 32 x 32 x 32 = 32768 문자

를 표현할수도 있습니다.

그러면 완성형은.. 저러한 일련의 규칙이 없습니다. 그냥 한글 Table에 문자를 가득

넣고 16비트 코드와 1:1 대응이 되도록 한것이지요..

어떤것이 좋을까요?. 한글관련 프로그래밍할때.. 문자자체를 분석할때

저것은 아주 유용합니다.. 과거 어떤 프로그램중에는 조합형과는 관련이 없었는데

데이터를 완성형으로 처리가 곤란하여 조합형으로 바꾸어 처리한후 다시 완성형으로

바꾸었던기억도 있습니다.

한마디로 완성형은 한글을 전혀 모르는 외국인이 생각도 없이 가장 무식한 방법으로

1분동안 생각하고 만들어 낼법한 방법이죠

한글구조를 마치 한문 구조 처럼 착각한거죠..

------------------------------
그런데 조합형 한글에서 종성에 있지도 않은 희안한 ㄹㅇ 가 같이 붙은 글씨라든가

ㅋㅎ 이 같이 붙은 글씨라던가 이런 것들을 모두 표현하기에는 32개가 모자랍니다.

그렇게 되려면 무조건 1바이트가 더 필요 하게 됩니다.

하지만 어차피 쓰지도 않는 희안한글씨까지 구테여 할필요도 없으며 표준화가

되면 없는글씨는 사용하지 않을테니 문제도 없겠죠..

그렇더라도 있어야 한다고 억지를 쓴다면.. (3바이트) 확장 조합형 식의 코드가

되어야됩니다. 한마디로 완성형은 존재의 이유조차 없는것이죠..

또한가지.. 조합형은 입력이 불가능할지언정 입력된것이 출력이 불가능할경우도

없습니다 프로그램에서 한글 출력을 못해 글씨가 깨지는 경우는 없겠지요..

이것의 이유는 한글 구조를 잘 살펴 보면 알겁니다.

완성형은 입력도 불완전 출력도 불완전 합니다.
--------------------------------------------------
요즘 새로 나온 UTF-8 UTF-16 은 어떤구조인지 안봤지만.. 완성형같은 악성바이러스

보다 더무서운 것은 제거 해야 된다고 생각뎀니다.

김우일의 이미지

많은 분들이 혼동하시는데 Unicode와 UTF는 다른 것입니다.
KSC 5601과 EUC-KR 정도의 차이죠. 자세한 건 http://www.unicode.org 에 가시면 볼 수 있을 겁니다.

Unicode도 완성형입니다. 말하자면 확장 완성형이죠. 다만, 이전의 완성형이 가졌던 문제점을 해소하고
조합형의 장점을 취하기 위해서 자모 순서의 계산에 의해 글자를 찾을 수 있는 방식으로 매핑했습니다.
완전한 조합형의 사용은 80년대 후반에 통했던 방식이지, internationalization이 이미 중요한 화두가 되어버린 지금은
조합형 사용하자고 주장할 수 없습니다.

물론 하얀눈 님께서 주장하시는게 뿅쁑 이라는 말도 쓸 수 없는 기존의 절름발이 완성형의 전철을 가서는 안 된다는
것임을 이해하겠습니다만.. 혼동하시는 분들이 많은 것 같아 댓글 달아봤습니다.

익명 사용자의 이미지

UTF-16 을 표준으로 하면.. text 문서 처리에서 문제가 있지 않나요?...

그래서 UTF-8 이 나온거로 아는데요..

어차피 표준으로 할거면..UTF-8 로 하는게 낫죠...

기존 문서와의 호환성도 유지하면서...

그렇지만...시스템 상의 메모리에는 UCS-4 형태로 들어가 있어야 겠죠?...

참고자료:
유니코드의 기본이 되는 UTF-16(UCS-2) 방식은 최대 216 - (예약된 공간) 개 만큼의 문자를 표현할 수 있습니다. 그러나 한 글자의 크기가 2바이트이기 때문에 현존하는 1바이트 ASCII 문자와는 호환되지 않는 문제점이 있습니다. 이에 대한 해결책으로 제시된 것이 UTF-8입니다. UTF-8 방식은 영역별로 문자의 길이가 가변적으로, 최소 1바이트에서 6바이트까지의 크기를 갖습니다.

박영록의 이미지

그게 사실, 윈도 계열의 에디터들은 대부분 일찍부터 UTF-16을 지원했습니다. 프로그래머들에게 가장 인기 높은 울트라 에디트라든지, 국산인 에디트 플러스, 국산이고 프리웨어인 아크로에디트까지 전부 UTF-16을 지원하죠. 심지어 메모장도-_- 근데 리눅스 계열은 관심이 없는 건지, vi나 이맥스는 지원하지 않더군요. UTF-8은 역시 윈도 계열은 대부분 지원을 하고(아크로에디트 제외) vi나 이맥스는 역시 지원하지 않습니다. 한글이 깨져서 나오죠.

컴파일러는 제가 알기로 MS의 제품과 자바 계열은 거의 모든 인코딩을 지원합니다. gcc는 잘 모르겠군요.

웬지 리눅스 진영이 유니코드 지원에서 발이 느리다는 생각이 많이 드는군요. 파일 시스템은 리눅스쪽이 오히려 일찍부터 유니코드를 지원하는데 리눅스 에디터의 양대 산맥인 vi와 이맥스가 지원을 안하니..

참, 그리고 제가 알기로, UTF-8이 ASCII를 부분집합으로 가지긴 하나, 어차피 ISO-8859-1과는 호환이 안되는 걸로 압니다. 그래서 유럽에선 미국만큼 UTF-8의 인기가 높지 않죠.

저도 사실은 UTF-8 쪽 손을 들어주고 싶습니다. 어차피 워드문서가 아닌 텍스트 파일이나 파일시스템에 사용되는 문자는 한국어 반, 영어 반이므로 공간 절약의 측면에서도 UTF-16이 우리에게 특별히 유리하다고 할 수 없고, 어차피 용량이 중요시되는 시대가 아닌 만큼 기존의 시스템과 절반이나마 호환이 되는 게 좋겠죠.

까비_의 이미지

vi역시 vim 6.0에서 utf-8을 잘 지원 합니다.

ㄲ ㅏ ㅂ ㅣ T o D y

까비_의 이미지

말을 꺼내놓고보니 콘솔에서 쓸 수 있는 iso10646 글꼴도 오래전에 나와있었다는 사실이 문득 생각나네요. :-)

ㄲ ㅏ ㅂ ㅣ T o D y

익명 사용자의 이미지

vi 에서는 폰트의 문제가 아닐까 하네요 터미널의 폰트 문제.

emacs 역시 20.x 에서 한글을 배우는 외국인이 유니코드를
쓸때 편하다고 쓰는걸 봤습니다.

약간 늦기는 하지만 아예 못쓸정도까진 아닌거 같은데요...
:)