Как написать файл UTF-8 с Java?
У меня есть текущий код, и проблема в том, что он создает файл кодовой страницы 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();
Ответы
Ответ 1
Вместо FileWriter
создайте FileOutputStream
. Затем вы можете обернуть это в OutputStreamWriter
, что позволяет передавать кодировку в конструкторе. Затем вы можете написать свои данные:
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(PROPERTIES_FILE), StandardCharsets.UTF_8)
Ответ 2
Попробуйте это
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("outfilename"), "UTF-8"));
try {
out.write(aString);
} finally {
out.close();
}
Ответ 3
Все ответы, приведенные здесь, не будут работать, поскольку прослушивание java UTF-8 прослушивается.
http://tripoverit.blogspot.com/2007/04/javas-utf-8-and-unicode-writing-is.html
Ответ 4
Попробуйте использовать FileUtils.write из Apache Commons.
Вы должны иметь возможность сделать что-то вроде:
File f = new File("output.txt");
FileUtils.writeStringToFile(f, document.outerHtml(), "UTF-8");
Это создаст файл, если он не существует.
Ответ 5
Так как Java 7 вы можете сделать то же самое с Files.newBufferedWriter
немного более кратко:
Path logFile = Paths.get("/tmp/example.txt");
try (BufferedWriter writer = Files.newBufferedWriter(logFile, StandardCharsets.UTF_8)) {
writer.write("Hello World!");
..
}
Ответ 6
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
тип утилиты 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.
Ответ 8
мы можем записать кодированный файл UTF-8 с помощью java, используя
используйте PrintWriter для написания XML-кода с кодировкой UTF-8
Или нажмите здесь
PrintWriter out1 = new PrintWriter(new File("C:\\abc.xml"), "UTF-8");
Ответ 9
Ниже образец кода может читать файл по строкам и записывать новый файл в формате 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();
}
}