如何用Java编写UTF-8文件?

我有一些当前的代码,问题是它创build一个1252代码页文件,我想迫使它创build一个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(); 

而不是使用FileWriter ,创build一个FileOutputStream 。 然后你可以把它包装在一个OutputStreamWriter ,它允许你在构造函数中传递一个编码。 然后你可以写你的数据到:

 OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(PROPERTIES_FILE), StandardCharsets.UTF_8) 

尝试这个

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

所有在这里给出的答案不会工作,因为Java的UTF-8写作是错误的。

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

尝试使用Apache Commons中的FileUtils.write 。

你应该能够做到这样的事情:

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

这将创build文件,如果它不存在。

从Java 7开始,您可以更简洁一点地使用Files.newBufferedWriter

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

Java 7文件实用程序types对于处理文件很有用:

 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。

我们可以使用PrintWriter编写UTF-8编码的xml文件

或点击这里

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

下面的示例代码可以逐行读取文件,并以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(); } }