web-dev-qa-db-ja.com

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();
168
mark smith

FileWriterを使用する代わりに、FileOutputStreamを作成します。その後、これをOutputStreamWriterでラップして、コンストラクターでエンコードを渡すことができます。それから---その中にあなたのデータを書くことができます try-with-resourcesステートメント

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

これを試して

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

Apache Commonsの FileUtils.write を使ってみてください。

次のようなことができるはずです。

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

ファイルが存在しない場合は作成されます。

24
A_M

JavaのUTF-8の記述にバグがあるため、ここに挙げたすべての答えは機能しません。

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

21
Emperorlou

Java 7以降、Files.newBufferedWriterでももう少し簡潔に同じことができます。

Path logFile = Paths.get("/tmp/example.txt");
try (BufferedWriter writer = Files.newBufferedWriter(logFile, StandardCharsets.UTF_8)) {
    writer.write("Hello World!");
    // ...
}
17
Nigel_V_Thomas
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();
9
boxofrats

Java 7 Filesユーティリティタイプ はファイルを操作するのに便利です。

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));
  }
}

Java 8バージョン を使用すると、Charset引数を省略できます。メソッドのデフォルトはUTF-8です。

7
McDowell

printWriterを使ってUTF-8でエンコードされたxmlを書くことで、UTF-8でエンコードされたファイルをJavaで書くことができます。

またはクリック ここ

PrintWriter out1 = new PrintWriter(new File("C:\\abc.xml"), "UTF-8");
3
Dharmesh Patel

以下のサンプルコードは、ファイルを1行ずつ読み取り、新しいファイルをUTF-8形式で書き込むことができます。また、私は明示的にCp1252エンコーディングを指定しています。

    public static void main(String args[]) throws IOException {

    BufferedReader br = new BufferedReader(new InputStreamReader(
            new FileInputStream("c:\\filenonUTF.txt"),
            "Cp1252"));
    String line;

    Writer out = new BufferedWriter(
            new OutputStreamWriter(new FileOutputStream(
                    "c:\\fileUTF.txt"), "UTF-8"));

    try {

        while ((line = br.readLine()) != null) {

            out.write(line);
            out.write("\n");

        }

    } finally {

        br.close();
        out.close();

    }
}
2
Ammad