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

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

 
Monday, November 20, 2006

Java/자바] UTF-8 BOM 있는 유니코드 파일 출력/만들기 예제


자바에서의 유니코드 사용에 대한 게시물입니다.

자바로 유니코드 파일을 만들면 BOM 이 없습니다. (▶▶ [QnA] 유니코드 (Unicode) 의 BOM (Byte Order Mark) 이란? 참고)

앞으로 자바가 버전업이 되면 어떨지 모르겠지만, 현재 자바 1.5 버전에서는 직접 BOM 을 추가해 주어야 하더군요.

그런데 UTF-8 의 "봄"은 3바이트이기에 좀 애매한데, 이것을 65279 라는 숫자로 변환하여 파일로 출력하면 UTF-8 BOM 이 만들어집니다. 이렇게 만든 봄을, 헥사 에디터로 보아도 정상적으로 보였고, EmEditor(이엠에디터)에서도 봄을 잘 인식했습니다.

물론 HTML용 UTF-8 유니코드에는 BOM 이 없어야 합니다.


다음 예제는,

ABC가나다라
똠방각하

라는 문자열이 든 "UTF-8 유니코드" 파일을 out.txt 라는 이름으로 만들어서 하드에 저장하는 것인데, 파일 맨 앞에 직접 봄을 삽입합니다. (봄은, 텍스트 에디터에서는 보이지 않음)


UTF-8 BOM (EF BB BF) 출력/삽입 예제


파일명: Foo.java
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
import java.io.*;

public class Foo {
  public static void main(String[] args) {

  try {
    BufferedWriter UniOutput = new BufferedWriter(
                                                  new OutputStreamWriter(
                                                                         new FileOutputStream("out.txt"),
                                                                         "UTF8"
                                                                         )
                                                  );

    // UTF-8의 BOM인 "EF BB BF"를 UTF-16BE 로 변환하면 "65279"라는 값이 됨
    UniOutput.write(65279);

    UniOutput.write("ABC가나다라");
    UniOutput.newLine();
    UniOutput.write("똠방각하");

    UniOutput.close();

  } catch (UnsupportedEncodingException e) {
      System.err.println(e);
      System.exit(1);
  } catch (IOException e) {
      System.err.println(e);
      System.exit(1);
  }

  }
}



16비트 유니코드의 봄을 생성하는 법: ▶▶ Java/자바] UTF-16LE, UTF-16BE BOM 쓰기, 유니코드 파일 출력; Write BOM


▶▶ 자바Java] 유니코드(UTF-8) 파일 출력, 유니코드 텍스트 파일 만들기: Unicode Output




tag: java
자바 | Java

0 Comments:

<< Home RSS 2.0 feed

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