it-swarm.dev

Como escrever um arquivo UTF-8 com Java?

Eu tenho algum código atual e o problema é a criação de um arquivo de página de código de 1252, eu quero forçá-lo a criar um arquivo UTF-8

Alguém pode me ajudar com esse código, como eu digo que atualmente funciona ... mas eu preciso forçar o save em utf .. posso passar um parâmetro ou algo assim?

isso é o que eu tenho, qualquer ajuda realmente apreciada

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

Em vez de usar FileWriter, crie um FileOutputStream. Você pode então agrupar isso em um OutputStreamWriter, que permite passar uma codificação no construtor. Então você pode escrever seus dados dentro de um declaração try-with-resources :

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

Tente isso

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

Tente usar FileUtils.write do Apache Commons.

Você deveria ser capaz de fazer algo como:

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

Isto irá criar o arquivo se ele não existir.

24
A_M

Todas as respostas dadas aqui não funcionarão, já que a escrita UTF-8 do Java está com problemas.

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

21
Emperorlou

Já que Java 7 você pode fazer o mesmo com Files.newBufferedWriter um pouco mais sucintamente:

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

O tipo de utilitário Java 7 Files é útil para trabalhar com arquivos:

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

O versão 8 do Java permite omitir o argumento Charset - o método padrão é UTF-8.

7
McDowell

podemos escrever o arquivo codificado em UTF-8 com Java usando o uso de PrintWriter para escrever xml codificado em UTF-8

Ou clique em aqui

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

Abaixo, o código de exemplo pode ler o arquivo linha por linha e escrever um novo arquivo no formato UTF-8. Além disso, estou especificando explicitamente a codificação 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