mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, August 29, 2007

UTF-8 BOM, UTF-16LE BOM, UTF-16BE BOM 출력 화면


각종 유니코드 인코딩의 파일에서 BOM 즉 "Byte Order Mark"를 출력한 화면입니다. test.txt 라는 이름의 텍스트 파일을 대문자 A로만 가득채운 후에, BOM(봄)을 붙여서 서로 다른 종류의 유니코드 인코딩으로 저장하고, 헥사뷰어로 덤프한 결과입니다. (파일 끝에는 0D 0A 라는 "도스 개행문자"가 붙어 있는데 이 포스트의 주제와는 직접적인 상관은 없습니다.)

UTF-8의 BOM 출력: EF BB BF


"UTF-8 유니코드"에는 BOM이 없는 것이 보통입니다. 특히 HTML용 UTF-8 파일에는 BOM이 없어야 합니다. 다만 BOM이 없으면, 파일에 한글이 아닌 영문자만 기입되어 있을 경우, "일반 8비트 ANSI 인코딩"과 절대 구분이 되지 않는 문제가 있습니다.

아무튼 아래의 첫 3문자인 EF BB BF 가, UTF-8의 "봄"입니다. 참고로, "41"은 알파벳 대문자 A의 16진수 아스키 코드입니다.
D:\Z>hexdump.pl test.txt
00000000:  EF BB BF 41 41 41 41 41  41 41 41 41 41 41 41 41  ...AAAAAAAAAAAAA
00000010:  41 41 41 41 41 41 41 41  41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
00000020:  41 41 41 41 41 41 41 41  41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
00000030:  41 41 41 41 41 41 41 41  41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
00000040:  41 41 41 41 41 41 41 41  41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
00000050:  41 41 41 41 41 41 41 41  41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
00000060:  41 41 41 41 41 41 41 41  41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
00000070:  41 41 41 41 41 41 41 0D  0A                       AAAAAAA..

D:\Z>



일반 유니코드(UTF-16LE)의 BOM: FF FE


MS윈도우에서 사용되는 16비트 유니코드 (little-endian)의 봄은 FF FE 라는 2문자입니다.
D:\Z>hexdump.pl test.txt
00000000:  FF FE 41 00 41 00 41 00  41 00 41 00 41 00 41 00  ..A.A.A.A.A.A.A.
00000010:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
00000020:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
00000030:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
00000040:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
00000050:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
00000060:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
00000070:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
00000080:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
00000090:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
000000A0:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
000000B0:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
000000C0:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
000000D0:  41 00 41 00 41 00 41 00  41 00 41 00 41 00 41 00  A.A.A.A.A.A.A.A.
000000E0:  41 00 41 00 41 00 41 00  41 00 0D 00 0A 00        A.A.A.A.A.....

D:\Z>



UTF-16BE의 BOM: FE FF


윈도우에서는 BE 즉 big-endian 유니코드는 사실상 사용되지 않습니다. 위의 LE 유니코드와는 바이트 순서가 거꾸로 되어 있습니다. 정확하게 말하자면 LE의 바이트 순서가 역순이고, BE의 바이트 순서는 바로 되어 있습니다.
D:\Z>hexdump.pl test.txt
00000000:  FE FF 00 41 00 41 00 41  00 41 00 41 00 41 00 41  ...A.A.A.A.A.A.A
00000010:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
00000020:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
00000030:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
00000040:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
00000050:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
00000060:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
00000070:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
00000080:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
00000090:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
000000A0:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
000000B0:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
000000C0:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
000000D0:  00 41 00 41 00 41 00 41  00 41 00 41 00 41 00 41  .A.A.A.A.A.A.A.A
000000E0:  00 41 00 41 00 41 00 41  00 41 00 0D 00 0A        .A.A.A.A.A....

D:\Z>



▶▶ [QnA] 유니코드 (Unicode) 의 BOM (Byte Order Mark) 이란?

▶▶ '리틀 엔디안 little-endian 유니코드'와 '빅 엔디안 big-endian 유니코드'의 차이점

Perl로 헥사 뷰어 만들기 소스: ▶▶ Perl 펄] 헥사 뷰어, 헥사 덤프 만들기 소스 코드; Hex Viewer, File Dump




tag: html
HTML | CSS | 자바스크립트 JavaScript
tag: editor
텍스트 에디터 | 문서 편집기 | Text Editor

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top