하나의 비트(0 혹은 1)가 있으면 두 가지의 상태를 표현할 수 있지요.
좌 혹은 우, 참 혹은 거짓, 유 아니면 무…
두개의 비트가 있으면 네 가지 상태(00 01 10 11)를 표현할 수 있지요.
네개의 비트가 모이면 비로소 10진수를 표현할 수 있습니다.
(사실은 16개를 표현할 수 있으니 10진수를 표현하고 몇 개가 남죠…)
여덟개의 비트, 즉 1 바이트를 가지고 알파벳과 특수문자 등을 의미하도록 하고
그것을 표준으로 만든게 그 유명한 ASCII (American Standard Code
for Information Interchange) 코드입니다.
[code:7m0wtew1]
remix@remix-laptop:~$ echo asdf > tmp.txt
remix@remix-laptop:~$ file tmp.txt
tmp.txt: ASCII text
remix@remix-laptop:~$
[/code:7m0wtew1]
한글을 표현하기 위해서는 그 두배인 16비트, 즉 2바이트가 필요로 하고,
말씀하신 EUC-KR, CP949는 한글 한문자 한문자를
어떻게 2바이트에 매핑을 시킬지 정해놓은 규칙을 의미합니다.
이진수의 데이터를 어떻게 매핑하냐…하는 것은
다른 모든 것들과 마찬가지로 힘의 논리(?)입니다만,
엄연히 표준이란게 존재하기는 합니다.
세상에 영어만 존재하는게 아니고, 각국의 언어가 존재하고,
각각 자기들만의 규칙으로 자기의 언어를 표현하고…
그러다보니 텍스트로 세계 각국의 언어를 통합해서 표현하기 위한 유니코드가 생깁니다.
한 문자가 차지하는 데이터 사이즈는 커지지만,
하나의 규칙으로 각국의 언어를 표현할 수 있고,
언어를 표현하는 혼잡한 규칙들을 통합할 수 있으니 대단히 편리한 것이지요.
우분투는 기본 유니코드를 사용합니다.
말씀하신 UTF-8이 바로 유니코드입니다.
[code:7m0wtew1]
remix@remix-laptop:~$ echo 한글 > tmp.txt
remix@remix-laptop:~$ file tmp.txt
tmp.txt: UTF-8 Unicode text
remix@remix-laptop:~$ echo 日本語 > tmp.txt
remix@remix-laptop:~$ file tmp.txt
tmp.txt: UTF-8 Unicode text
remix@remix-laptop:~$
[/code:7m0wtew1]
(참고:UTF-8의 처음 부분은 말씀드린 ASCII를 포함합니다)
텍스트를 사용하지 않는 프로그램이 존재할까요?
물론 OS도 프로그램이니 텍스트를 사용할테고,
그렇기 때문에 OS레벨의 유니코드 사용과 프로그램 레벨의 유니코드 사용이
구분되는 것이겠지요.
쓰다보니 무지 길어졌네요…
아무쪼록 이해에 도움되시길 바랍니다.