2012-04-10 2 views
7

Java에서 * nix 스크립트 세트의 인코딩을 UTF-8로 프로그래밍 방식으로 변경해야합니다. 나는 그 (것)들에게 아무 것도 쓰지 않을 것이므로, 나는 이것을하는 가장 쉬운 방법을 찾는 것을 시도하고있다. 파일은 너무 많지 않고 그다지 크지 않습니다. 나는 수 :Java로 기존 파일의 인코딩을 변경 하시겠습니까?

  • 인코딩으로 UTF-8 세트 OutputStream를 사용하여 빈 문자열을 "쓰기"
  • 이미, 내가 읽을 수 (아파치 코 몬즈에서) Fileutils의를 사용하고 있기 때문에 | 다음의 내용을 쓰기 UTF-8을 인코딩으로 전달하는 파일

큰 문제는 아니지만 전에이 사건을 겪은 사람이 있습니까? 두 가지 접근법에 어떤 단점이 있습니까?

+2

및 재 작성 * 경우를 제외하고 초기 BOM을 필요로하지 않는 정상적인 7 비트 클린 ASCII 파일 등이 있습니다. BOM은 스트림뿐만 아니라 인코딩 변경을 이동합니다. –

+0

하지만 유닉스의 기본 인코딩은 UTF-8입니다. 당신 스크립트의 인코딩은 무엇입니까. – Cratylus

+0

@ user384706 아마도 비 BOM 스트림이 많은 "텍스트"응용 프로그램에 의해 UTF-8로 취해진다고 말하는 것이 더 적절할 것입니다 ... "기본 인코딩"은 특정 언어/라이브러리/API. –

답변

11
요청으로

, 당신은 평민에게 IO를 사용하고 있기 때문에, 여기에 예제 코드 (오류가 바람에 확인)입니다 :

* 표시 전체 파일을 읽을 수 있어야합니다
import java.io.File; 
import java.io.IOException; 
import org.apache.commons.io.FileUtils; 

public class Main { 
    public static void main(String[] args) throws IOException { 
     String filename = args[0]; 
     File file = new File(filename); 
     String content = FileUtils.readFileToString(file, "ISO8859_1"); 
     FileUtils.write(file, content, "UTF-8"); 
    } 
} 
+0

'UTF-8'이 필요합니까? Java의 기본 인코딩은 UTF-8이라고 생각합니다. – Cratylus

+3

여기에 몇 가지 이야기가 있습니다. 처음에는 기본값이 utf8이 될 가능성이 낮습니다. 둘째,이 코드는 모두 인코딩에 관한 것이므로 명시 적으로하는 것이 가장 좋습니다. http://stackoverflow.com/questions/1006276/what-is-the-default-encoding-of-jvm – daveb

+0

경고 : 어떤 이유로이 옵션은 몇 KB보다 긴 파일을 잘라내어 본질적으로 파일의 내용을 특정 지점 이상으로 삭제합니다 –

관련 문제