2012-02-20 3 views
1

에 자바와 UTF-16LE를 사용하여 TSV 파일로 저장 자바를 통해 tsv 파일? EDIT : xls 파일을 Java를 통해 tsv 파일로 변환 할 수있는 방법이 있습니까?여는 XLS 파일과 나는 두 가지 질문을했습니다 UTF-8 변환

Java를 사용하여 UTF-16LE 파일을 UTF-8로 변환 할 수있는 방법이 있습니까?

은/수정/열 .XLS 파일을 저장할 수 있습니다 jexcelapi라는 라이브러리가 당신

답변

0

나는 두 가지 질문을했습니다 우리가 java를 사용하여 UTF-16LE 파일을 UTF-8로 변환 할 수있는 방법이 있습니까?

물론 있습니다. 그리고 한 가지 이상의 방법이 있습니다.

기본적으로 입력 인코딩 (UTF-16LE)을 지정한 입력 파일을 읽고 출력 인코딩 (UTF-8)을 지정하는 파일을 작성하려고합니다.

는 일부 UTF-16LE 인코딩 된 파일이 말 :

... $ file testInput.txt 
testInput.txt: Little-endian UTF-16 Unicode character data 

을하면 다음 기본적으로 (그냥 예입니다 자바에서 이런 일을 할 수있는 : 당신은 어쩌면, 누락 된 예외 처리 코드를 입력 할 수 있습니다 등), 어떤 경우 BOM을 폐기 어쩌면, 마지막에 마지막 개행을 넣지 :이 UTF-8로 인코딩 된 파일을 생성해야

FileInputStream fis = new FileInputStream(new File("/home/.../testInput.txt")); 
    InputStreamReader isr = new InputStreamReader(fis, Charset.forName("UTF-16LE")); 
    BufferedReader br = new BufferedReader(isr); 
    FileOutputStream fos = new FileOutputStream(new File("/home/.../testOutput.txt")); 
    OutputStreamWriter osw = new OutputStreamWriter(fos, Charset.forName("UTF-8")); 
    BufferedWriter bw = new BufferedWriter(osw); 
    String line = null; 
    while ((line = br.readLine()) != null) { 
     bw.write(line); 
     bw.newLine(); // will add an unnecessary newline at the end of your file, fix this 
    } 
    bw.flush(); 
    // take care of closing the streams here etc. 

.

$ file testOutput.txt 
testOutput.txt: UTF-8 Unicode (with BOM) text 

BOM을 명확하게, 예를 들면, 사용을 알 수있다, 16 진 덤프 :이 두번째 인코딩하는 동안에

$ hexdump testOutput.txt -C 
00000000 ef bb bf ... (snip) 

는 BOM은 (EF BB FB) UTF-8에서 3 바이트를 인코딩 UTF-16의 바이트. UTF16-LE에서 BOM은 다음과 같습니다 : UTF-8 인코딩 된 파일 또는 (둘 다 완전히 유효)하지 않을 수 있습니다 "BOM"(바이트 순서 마스크)를 가질 수

$ hexdump testInput.txt -C 
00000000 ff fe ... (snip) 

하는 것으로. UTF-8 파일의 BOM은 바보가 아닙니다. 바이트 순서는 신경 쓰지 않지만 텍스트 파일을 UTF-8로 인코딩 된 것으로 신속하게 식별하는 데 도움이 될 수 있습니다. BOM이있는 UTF-8 파일은 유니 코드 사양에 따라 완전히 합법적이므로 BOM으로 시작하는 UTF-8 파일을 처리 할 수없는 독자는 고장났습니다. 평범하고 단순합니다.

BOM을 처리 할 수없는 깨진 UTF-8 판독기로 작업하는 이유가 무엇이든간에 디스크에 쓰기 전에 BOM을 첫 번째 문자열에서 제거해야 할 수 있습니다. 여기 BOM을에

더 많은 정보를 정기적으로 :

http://unicode.org/faq/utf_bom.html

+0

고맙습니다. – Tom

0

감사드립니다. .xls 파일을 읽은 후에는 .tsv 파일로 출력 할 수있는 내용을 작성하는 것이 어렵지 않습니다.

인가 : 내가 두 번째 질문을 답변 해 드리겠습니다 당신이 두 가지 질문에 그 분할한다에 StackOverflow에

...

:

+0

문제를 이잖아. jexcelapi를 사용할 때 "다른 이름으로 저장"할 수있는 방법이 없습니다. 주위에 다른 방법이 있습니까? – Tom

관련 문제