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

 
Previous Post Vim Vi 헥사 뷰어, 헥사 에디터 모드 명령어; Hex Viewer Hex Editor...윈도우에서 grep 명령어 사용하기; Windows Win32 grep 명령파일에 출력하는 배치 파일 작성법; BAT으로 Text File 만들기UTF-8 EUC-KR 변환할 때 HTML 글자 깨짐 해결법Bold 태그, 볼드 Tag, HTML CSS에서 글자 진하게 하는 태그배치파일 함수 구현, BAT에서 GOSUB 문 서브루틴, 고급 BATCH 테크닉배치파일 문자열 함수는? 스트링 추출 출력 방법; Batch StringDOS 명령어 / 모든 도스 명령 목록; MS-DOS CommandC언어, 8진수 10진수 변환, 팔진수를 십진수로 바꾸는 함수; Octal NumberPerl 펄, 8진수를 10진수로 변환 출력, 팔진수 십진수 변환 함수 oct

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

Wednesday, August 29, 2007

각종 유니코드 인코딩의 파일에서 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



0 Comments:

Post a Comment

<< Home RSS 2.0 feed

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