[java] Java로 UTF-8 파일을 작성하는 방법은 무엇입니까?

현재 코드가 있는데 문제는 1252 코드 페이지 파일을 만드는 것입니다. UTF-8 파일을 만들도록 강요하고 싶습니다

내가 현재 작동한다고 말하면 누구나이 코드로 나를 도울 수 있습니까?하지만 utf에 강제로 저장해야합니다 .. 매개 변수 나 무언가를 전달할 수 있습니까 ??

이것은 내가 가진 것입니다, 어떤 도움이라도 정말로 감사합니다

var out = new java.io.FileWriter( new java.io.File( path )),
        text = new java.lang.String( src || "" );
    out.write( text, 0, text.length() );
    out.flush();
    out.close();



답변

을 사용하는 대신을 FileWriter만듭니다 FileOutputStream. 그런 다음 이것을로 감싸서 OutputStreamWriter생성자에서 인코딩을 전달할 수 있습니다. 그런 다음 try-with-resources 문 안에 데이터를 쓸 수 있습니다 .

try (OutputStreamWriter writer =
             new OutputStreamWriter(new FileOutputStream(PROPERTIES_FILE), StandardCharsets.UTF_8))
    // do stuff
}


답변

이 시도

Writer out = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("outfilename"), "UTF-8"));
try {
    out.write(aString);
} finally {
    out.close();
}


답변

사용해보십시오 FileUtils.writeApache Commons에서 .

다음과 같은 작업을 수행 할 수 있어야합니다.

File f = new File("output.txt");
FileUtils.writeStringToFile(f, document.outerHtml(), "UTF-8");

파일이 없으면 작성됩니다.


답변

여기에 제공된 모든 답변은 Java의 UTF-8 작성이 버그가 있기 때문에 작동하지 않습니다.

http://tripoverit.blogspot.com/2007/04/javas-utf-8-and-unicode-writing-is.html


답변

Java 7부터는 Files.newBufferedWriter좀 더 간결하게 똑같이 할 수 있습니다 .

Path logFile = Paths.get("/tmp/example.txt");
try (BufferedWriter writer = Files.newBufferedWriter(logFile, StandardCharsets.UTF_8)) {
    writer.write("Hello World!");
    // ...
}


답변

var out = new java.io.PrintWriter(new java.io.File(path), "UTF-8");
text = new java.lang.String( src || "" );
out.print(text);
out.flush();
out.close();


답변

자바 7 파일 유틸리티 유형의 파일 작업을하는 데 유용합니다 :

import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.*;

public class WriteReadUtf8 {
  public static void main(String[] args) throws IOException {
    List<String> lines = Arrays.asList("These", "are", "lines");

    Path textFile = Paths.get("foo.txt");
    Files.write(textFile, lines, StandardCharsets.UTF_8);

    List<String> read = Files.readAllLines(textFile, StandardCharsets.UTF_8);

    System.out.println(lines.equals(read));
  }
}

자바 8 버전은 당신이 생략 할 수 있습니다 캐릭터 세트의 UTF-8 방법의 기본 – 인수를.