Hoe schrijf ik een UTF-8-bestand met Java?

Ik heb wat huidige code en het probleem is dat het een 1252-codepaginabestand maakt, ik wil het dwingen een UTF-8-bestand te maken

Kan iemand me helpen met deze code, aangezien ik zeg dat het momenteel werkt… maar ik moet het opslaan op utf forceren.. kan ik een parameter doorgeven of zoiets??

dit is wat ik heb, alle hulp wordt zeer op prijs gesteld

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

Antwoord 1, autoriteit 100%

Maak in plaats van FileWritereen FileOutputStream. U kunt dit vervolgens in een OutputStreamWriterplaatsen, waarmee u een codering in de constructor kunt doorgeven. Vervolgens kunt u uw gegevens daarop schrijven in een try-with-resources Statement:

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

Antwoord 2, autoriteit 94%

Probeer dit

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

Antwoord 3, autoriteit 14%

Probeer FileUtils.writevan Apache Commons.

Je zou zoiets moeten kunnen doen:

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

Hiermee wordt het bestand aangemaakt als het niet bestaat.


Antwoord 4, autoriteit 10%

Sinds Java 7 kun je hetzelfde doen met Files.newBufferedWriter, iets beknopter:

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

Antwoord 5, autoriteit 10%

Alle antwoorden die hier worden gegeven, werken niet omdat Java’s UTF-8-schrijven wordt afgeluisterd.

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


Antwoord 6, autoriteit 4%

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

Antwoord 7, autoriteit 3%

Het type Java 7 Files-hulpprogrammais handig voor het werken met bestanden:

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

De Java 8-versiestelt u in staat om het argument Tekensetweg te laten – de methoden zijn standaard UTF-8.


Antwoord 8, autoriteit 2%

we kunnen het UTF-8-gecodeerde bestand met java schrijven met
gebruik PrintWriter om UTF-8-gecodeerde xml te schrijven

Of klik hier

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

Antwoord 9

De onderstaande voorbeeldcode kan het bestand regel voor regel lezen en een nieuw bestand schrijven in UTF-8-indeling. Ik specificeer ook expliciet Cp1252-codering.

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

Other episodes