KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
Many changes of mind and mood; do not hesitate too long.
FrontPage › UTF-8
UTF-8은, Unicode Transformaion Format-8의 줄인 말이다. 즉, ISO 10646 / Unicode에서 정의한 문자 집합을 8비트 바이트 스트림으로 인코딩하는 규약이다.

목차

1 UTF-8
2 UTF-8의 용례 및 다른 정보들
3 TeXUTF-8
4 UTF-8 문서의 편집
5 BOM 문제
6 대화

1 UTF-8

UTF-8은 모든 Unicode 문자를 1바이트에서 4바이트까지 가변폭 바이트 스트림으로 인코딩한다.
<!> 6바이트가 아님. [http]ISO JTC1/SC2/WG2는 공식적으로 ISO 10646에서 UTF-16으로 표현 가능한 상한선인 U+10FFFF를 넘는 범위에 문자를 배정하지 않으리라고 결정했고, [http]Unicode Technical Committee는 그에 앞서 같은 결정을 내렸다.

하나의 Unicode 문자를 몇 바이트로 인코딩할지는 해당 글자에 할당된 코드값 ([http]Unicode Scalar Value)에 따라 결정할 수 있다. U+007F(127)까지는 1 바이트, U+0080(128)에서 U+07FF(2047)까지는 2 바이트, U+0800(2048)에서 U+FFFF(65535)까지는 3 바이트, U+10000(65536)에서 U+10FFFF(1114111)까지는 4 바이트를 쓴다. 따라서 US-ASCII에 속하는 문자는 U+0000 (NULL)을 포함해서 UTF-8에서는 한 바이트로 표현할 수 있다. 이 특성은 US-ASCII와 호환성을 유지해야 하는 유닉스 파일 시스템[UTF-8], SMTP (인터넷 메일)를 비롯한 텍스트 기반인 여러 인터넷 프로토콜에서 쓰기에 적합하다.

Unicode를 인코딩하는 방법으로는 UTF-7, UTF-8, UTF-16, UTF-32 등 여러 가지 방법이 있다. TeX에서는 주로 UTF-8을 사용하는데, CJK 문자는 U+0800 이후에 할당되어 있으므로 UTF-8에서 3 바이트를 써서 나타내야 한다. 반면에 UTF-16을 쓸 경우에는 CJK 글자를 포함해서 모든 BMP (Basic Multilingual Plane : Unicode 중 처음 65,536 코드 포인트)에 속하는 글자는 2 바이트로 나타낸다. 이런 이유로 UTF-16을 선호하는 경우가 있으나 (UTF-8이 UTF-16에 비해 최대 1.5배 더 많은 저장 공간/송신 시간을 요하므로) US-ASCII와의 호환성은 많은 경우에 대단히 중요하므로, Unix(Mac OS X)와 BeOS 등은 텍스트 형식과 그와 유사한 형식에서 UTF-8을 주로 쓴다. 같은 이유로 TeX/Omega에서도 UTF-8을 주로 쓴다. 반면에 Win32에서는 텍스트 문서 형식도 기본으로는 UTF-16을 사용한다.

텍스트 형식과 OS나 프로그램 혹은 라이브러리 내부에서 어떤 인코딩을 쓰느냐는 별개의 문제이다. Linux glibc는 UTF-32를 쓰고, Mac OS X, Win32, Omega, ICU (International Component for Unicode), Java, [http]ECMAscript[1], Mozilla 등은 UTF-16을 쓰고, BeOS, glib, Perl 등은 UTF-8을 쓴다. Python은 UTF-32 혹은 UCS-2 (2byte 혹은 4byte를 쓰는 가변폭 인코딩인 UTF-16과 달리 UCS-2는 2byte 고정폭 인코딩으로 오직 BMP만 지원할 수 있다.)를 쓰도록 컴파일할 수 있다. UTF-32는 가변폭 인코딩인 UTF-16을 다루는데서 오는 불편함[2]을 피할 수 있는 반면에 UTF-8에 비해 최대 4배의 공간(US-ASCII에 속하는 글자라면)을, UTF-16에 비해서도 최대 2배 (BMP에 속하는 글자의 경우)의 공간을 쓴다는 단점이 있다.

더 자세한 것은 다음 웹 페이지와 거기서 언급한 MS, Apache 등에 있는 관련 페이지를 참조하십시오 : -- 신정식
----
  • [UTF-8] 은 UTF-FSS라고 불리웠다. FSS는 여기서 File System Safe를 뜻한다.
  • [1] Javascript : ECMA 290, ECMA 327도 ECMAscript 관련 표준임
  • [2] 그다지 큰 문제가 되지는 않는다. 많은 OS, 라이브러리, 응용 프로그램에서 이를 잘 쓰고 있다. 하지만, 개인적으로는 UTF-32를 선호한다.

3 TeXUTF-8

  • UTF-8 인코딩 문서에서 US-ASCII에 속하는 글자는 1바이트로 표현된다. 그러므로 TeX 명령들은 보통의 ASCII 텍스트와 같은 코드를 가지므로 TeX/Omega가 명령을 인식하고 처리하는 데 코드 변환의 부담을 줄일 수 있다.
  • 현재 UTF-8 인코딩의 한글 문서를 처리할 수 있는 TeX 또는 TeX Macro는 LaTeX을 그냥 이용하는 CJKLaTeX이나 LaTeX-ucs, 그리고 Omega/Lambda를 이용하는 HLaTeX/Lambda가 있다.
  • UTF-8 인코딩으로는 Unicode를 전부 쓸 수 있으므로 다국어 문서를 작성하는 데는 가장 좋은 해결책 가운데 하나가 된다. 유일한 문제는 Unicode 전체를 표현할 수 있는 글꼴이 있느냐는 것일 뿐이다.

See also UTF8한글조판

4 UTF-8 문서의 편집

UTF-8 문서를 편집할 수 있는 편집기/워드프로세서NotePad, Wordpad, MS-Word, 아래아한글, UltraEdit, Yudit, EditPlus, jEdit, AcroEdit, [http]SCUnipad, Windows용 Vim (VimEditor), Windows용 Emacs 등이 있다.

Unix (Linux, Mac OS X 포함)에는 UTF-8 문서 편집할 수 있는 편집기가 매우 많습니다. Vim, Emacs, TextEdit (Mac), Yudit, [http]mined, gedit, kedit 등입니다. 일부 편집기는 [http]locale를 정해야 합니다. XIM으로는 [http]Nabi[http]Ami 등을 사용해서 사용할 수 있습니다.

5 BOM 문제


6 대화

Emacs에서 UTF-8로 한글입력에 성공하신 분의 성공담을 듣고 싶습니다. 가르침을 주시면 감사하겠습니다. --hermian
[http]mule-ucs를 설치하면 될 것입니다. 데비안이라면 apt-get install mule-ucs. --DohyunKim
mule-ucs를 설치해도 emacs에서 한글입력이 되지 않고, 그냥 공란으로 나오는데요. 아마도 font가 없어서 인것 같기도 하고, mule-ucs가 일본어와 한자만 지원하지 않는가라는 생각도 있습니다. 잘 모르고 주절거리는데요. 구체적으로 어떻게 사용하는지요. 제가 쓰고 있는 system은 hancom linux입니다.ktug에 빚을 지고 있습니다.--synapse
NTEmacs에 관련 글이 있습니다. --Karnes

W32TeXLambda는 BOM이 붙은 UTF-8 입력엔코딩의 파일을 에러없이 처리해준다.
결국 Win32용 TeX은 이런 식으로 고쳐야 할 것입니다.

위에서 언급한 [http]SCUnipad를 써 보십시오. UTF-8 BOM 처리도 해 준다고 합니다. 또, Windows용 Vim (VimEditor)도 UTF-8 BOM을 잘 처리해 줄 것입니다. -- 신정식



^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-19 08:18:00
Processing time 0.0490 sec