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 이 없어야 합니다.
다음 예제는,
라는 문자열이 든 "UTF-8 유니코드" 파일을 out.txt 라는 이름으로 만들어서 하드에 저장하는 것인데, 파일 맨 앞에 직접 봄을 삽입합니다. (봄은, 텍스트 에디터에서는 보이지 않음)
파일명: Foo.java
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
16비트 유니코드의 봄을 생성하는 법: ▶▶ Java/자바] UTF-16LE, UTF-16BE BOM 쓰기, 유니코드 파일 출력; Write BOM
▶▶ 자바Java] 유니코드(UTF-8) 파일 출력, 유니코드 텍스트 파일 만들기: Unicode Output
자바로 유니코드 파일을 만들면 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);
}
}
}
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
<< Home