2012-12-15 3 views
0

일부 힌디어 문자 및 기본 문자 인코딩이 ISO 8859-1 인 텍스트 파일이 있습니다. "FileInputStream"을 사용하여 해당 파일의 데이터를 읽고 "FileOutputStream"을 사용하여 다른 텍스트 파일에 데이터를 씁니다.Java 문자 인코딩

내 코드입니다 : 내가 인코딩을 지정하고 있지 않다

FileInputStream fis = new FileInputStream("D:/input.txt"); 
    int i = -1; 
    FileOutputStream fos = new FileOutputStream("D:/outputNew.txt"); 
    while((i = fis.read())!= -1){ 
     fos.write(i); 
    } 
    fos.flush(); 
    fos.close(); 
    fis.close(); 

("UTF-8") 어디서나,하지만 여전히 일어나고 text.How 적절한 가진 출력 파일, 난 점점 아니에요?

+0

시스템 기본 문자 세트는 Latin-1이지만 Java의 기본 문자 세트는 무엇입니까? – Makoto

+0

@Makoto : Java의 기본 charset을 찾는 방법, "ISO-8859-1"을 인쇄하는 "Charset.defaultCharset()"을 사용하고 있습니까? –

답변

7

프로그램에서 char을 사용하지 않아 작동합니다. 한 파일에서 다른 파일로 원시 바이트를 전송하는 것입니다. 문자를 읽고 쓴다면 문제가 될 것입니다. 그 이유는 인코딩이 파일의 바이트를 문자로 변환하거나 그 반대로 변환하기 때문입니다.

+0

"reader"와 "writer"를 사용하는 경우에도 동일한 문제가 발생합니다. 즉, 인코딩 ("UTF-8")을 지정하지 않고 어느 위치에서나 올바른 텍스트가있는 출력 파일을 지정하고 있습니다. –

+0

즉, UTF-8로 인코딩 된 Indi 문자를 나타내는 바이트를 파일에 포함하면 운이 좋다는 것을 의미하며,이 바이트는 latin-1로 인코딩 된 유효한 문자를 나타낼 수도 있습니다. 프랑스어로 된 단어들만 사용하는 영어로 작성된 전자 메일을 가지고있는 경우와 조금 다릅니다. –