web-dev-qa-db-fra.com

Comment écrire un fichier UTF-8 avec Java?

J'ai un code actuel et le problème est de créer un fichier de page de code 1252, je veux le forcer à créer un fichier UTF-8

Quelqu'un peut-il m'aider avec ce code, comme je le dis, cela fonctionne actuellement ... mais je dois forcer la sauvegarde sur utf .. puis-je passer un paramètre ou quelque chose ??

c'est ce que j'ai, toute aide vraiment appréciée

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

Au lieu d'utiliser FileWriter, créez un FileOutputStream. Vous pouvez ensuite envelopper ceci dans un OutputStreamWriter, ce qui vous permet de passer un encodage dans le constructeur. Ensuite, vous pouvez écrire vos données dans un Instruction try-with-resources :

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

Essaye ça

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

Essayez d’utiliser FileUtils.write d’Apache Commons.

Vous devriez pouvoir faire quelque chose comme:

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

Cela créera le fichier s'il n'existe pas.

24
A_M

Toutes les réponses données ici ne fonctionneront pas, car l'écriture en Java UTF-8 est en panne.

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

21
Emperorlou

Depuis Java 7, vous pouvez faire de même avec Files.newBufferedWriter un peu plus succinctement:

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

Le type type d’utilitaire Java 7 Files est utile pour travailler avec des fichiers:

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

La version Java 8 vous permet d’omettre l’argument Charset - les méthodes par défaut sont UTF-8.

7
McDowell

nous pouvons écrire le fichier encodé UTF-8 avec Java en utilisant printWriter pour écrire du xml encodé en UTF-8

Ou cliquez ici

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

L'exemple de code ci-dessous permet de lire fichier par fichier et d'écrire un nouveau fichier au format UTF-8. En outre, je spécifie explicitement le codage 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