Tuesday, October 24, 2006
자바,Java] 유니코드(UTF-8)변환, KS완성형 파일을 유니코드로 바꾸기
"한글 확장 완성형 파일" 즉 euc-kr 또는 cp949 또는 ks_c_5601-1987 인코딩의 파일을, 유니코드로 변환하는 자바 프로그램입니다. 유니코드는 여러 종류가 있는데 여기서는 UTF-8 로 변환합니다. UTF-8 이 인터넷에서 사용되는 형식입니다. HTML 파일을 유니코드 인코딩으로 작성할 때에는 UTF-8 이어야 합니다. 다른 종류의 유니코드는 문제가 생깁니다.
파일명: Foo.java
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
예를 들어 "0.txt" 라는 한글 완성형 파일을 변환하기 위해서는
javac Foo.java
이렇게 컴파일한 후
java Foo 0.txt
이렇게 옵션을 주어 실행시키면
하드의 현재 디렉토리에 "0.txt.uni" 라는 유니코드(UTF-8) 파일이 생깁니다. 똑같은 내용이며 단지 인코딩이 다릅니다.
그런데 다만 BOM 이 없습니다. 물론 인터넷에 올릴 HTML 파일을 UTF-8로 인코딩할 때에는 BOM 이 없는 것이 정상입니다: ▶▶ [QnA] 유니코드 (Unicode) 의 BOM (Byte Order Mark) 이란?
▶▶ Java/자바] UTF-8 BOM 있는 유니코드 파일 출력/만들기 예제
입력 파일의 인코딩은 기본값으로 했기에, 한글 윈도우가 아닌 일본어판 윈도우에서 실행하면, 일본어 Shift-JIS 파일이 UTF-8로 변환될 것입니다.
운영체제의 언어에 상관없이 항상 한국어 파일을 대상으로 하는 코드: ▶▶ Java/자바] 한글 euc-kr (MS949) 파일을, 유니코드(UTF-8)로 변환 프로그램
텍스트 편집기를 사용하여 파일을 유니코드로 변환하는 방법: ▶▶ 한글 텍스트 문서를, 유니코드(Unicode / UTF-8) 로 변환하기
☞ 유니코드 | Unicode
JAVA 소스: 확장 완성형을 유니코드(UTF-8)로 변환
파일명: Foo.java
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
import java.io.*;
public class Foo {
public static void main(String args[]) {
if (args.length == 0) { // args.length 는 옵션 개수
System.err.println("Input Filename...");
System.exit(1); // 읽을 파일명을 주지 않았을 때는 종료
}
String outFilename = args[0] + ".uni"; // 출력 파일명 만들기, uni 라는 확장자를 붙여서
try {
////////////////////////////////////////////////////////////////
BufferedReader in = new BufferedReader(new FileReader(args[0]));
BufferedWriter out = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(outFilename),
"UTF-8"
)
);
String s;
while ((s = in.readLine()) != null) {
out.write(s); out.newLine();
}
in.close(); out.close();
////////////////////////////////////////////////////////////////
} catch (IOException e) {
System.err.println(e); // 에러가 있다면 메시지 출력
System.exit(1);
}
}
}
public class Foo {
public static void main(String args[]) {
if (args.length == 0) { // args.length 는 옵션 개수
System.err.println("Input Filename...");
System.exit(1); // 읽을 파일명을 주지 않았을 때는 종료
}
String outFilename = args[0] + ".uni"; // 출력 파일명 만들기, uni 라는 확장자를 붙여서
try {
////////////////////////////////////////////////////////////////
BufferedReader in = new BufferedReader(new FileReader(args[0]));
BufferedWriter out = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(outFilename),
"UTF-8"
)
);
String s;
while ((s = in.readLine()) != null) {
out.write(s); out.newLine();
}
in.close(); out.close();
////////////////////////////////////////////////////////////////
} catch (IOException e) {
System.err.println(e); // 에러가 있다면 메시지 출력
System.exit(1);
}
}
}
예를 들어 "0.txt" 라는 한글 완성형 파일을 변환하기 위해서는
javac Foo.java
이렇게 컴파일한 후
java Foo 0.txt
이렇게 옵션을 주어 실행시키면
하드의 현재 디렉토리에 "0.txt.uni" 라는 유니코드(UTF-8) 파일이 생깁니다. 똑같은 내용이며 단지 인코딩이 다릅니다.
그런데 다만 BOM 이 없습니다. 물론 인터넷에 올릴 HTML 파일을 UTF-8로 인코딩할 때에는 BOM 이 없는 것이 정상입니다: ▶▶ [QnA] 유니코드 (Unicode) 의 BOM (Byte Order Mark) 이란?
▶▶ Java/자바] UTF-8 BOM 있는 유니코드 파일 출력/만들기 예제
입력 파일의 인코딩은 기본값으로 했기에, 한글 윈도우가 아닌 일본어판 윈도우에서 실행하면, 일본어 Shift-JIS 파일이 UTF-8로 변환될 것입니다.
운영체제의 언어에 상관없이 항상 한국어 파일을 대상으로 하는 코드: ▶▶ Java/자바] 한글 euc-kr (MS949) 파일을, 유니코드(UTF-8)로 변환 프로그램
텍스트 편집기를 사용하여 파일을 유니코드로 변환하는 방법: ▶▶ 한글 텍스트 문서를, 유니코드(Unicode / UTF-8) 로 변환하기
☞ 유니코드 | Unicode
tag: java
자바 | Java
args 찾아보다가 방문했는데 덕분에 이해가 됐습니다. 감사합니다.
<< Home