|   |  | 
        
          | 
			  
			    | 茫茫網海中的冷日 發生過的事,不可能遺忘,只是想不起來而已!
 |  
				|  | 恭喜您是本站第 1746582 
										位訪客!
					 登入  | 註冊 |  |  | 
      
      
        
                      | 
 
 
 
 
 
 | 
                      
	| 發表者 | 討論內容 |  
	| 冷日 (冷日)
 | 發表時間:2019/4/5 14:54 |  
	| 
	Webmaster   
		註冊日: 2008/2/19來自: 發表數: 15773 | 
	[轉貼]How to write a UTF-8 file with Java?How to write a UTF-8 file with Java?
 I have some current code and the problem is its creating a 1252 codepage file, i want to force it to create a UTF-8 file
 Can anyone help me with this code, as i say it currently works... but i need to force the save on utf.. can i pass a parameter or something??
 this is what i have, any help really appreciated
 
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();
 
 
 Instead of using FileWriter, create a FileOutputStream. You can then wrap this in an OutputStreamWriter, which allows you to pass an encoding in the constructor. Then you can write your data to that inside a try-with-resources Statement:
 
try (OutputStreamWriter writer =
             new OutputStreamWriter(new FileOutputStream(PROPERTIES_FILE), StandardCharsets.UTF_8))
    // do stuff
}
 
 
 Try this
 
Writer out = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("outfilename"), "UTF-8"));
try {
    out.write(aString);
} finally {
    out.close();
}
 
 
 Try using FileUtils.write from Apache Commons.
 You should be able to do something like:
 
File f = new File("output.txt");
FileUtils.writeStringToFile(f, document.outerHtml(), "UTF-8");This will create the file if it does not exist.
 
 
 
 All of the answers given here wont work since java's UTF-8 writing is bugged.
 http://tripoverit.blogspot.com/2007/04/javas-utf-8-and-unicode-writing-is.html
 
 
 
 Since Java 7 you can do the same with Files.newBufferedWriter a little more succinctly:
 
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();
 
 
 The Java 7 Files utility type is useful for working with 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));
  }
}The Java 8 version allows you to omit the Charset argument - the methods default to UTF-8.
 
 
 
 we can write the UTF-8 encoded file with java using use PrintWriter to write UTF-8 encoded xml
 Or Click here
 
PrintWriter out1 = new PrintWriter(new File("C:\\abc.xml"), "UTF-8");
 
 
 Below sample code can read file line by line and write new file in UTF-8 format. Also, i am explicitly specifying Cp1252 encoding.
 
    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();
    }
}
 原文出處:How to write a UTF-8 file with Java? - Stack Overflow
 |  
	|  |  
| 
 |  
 討論串
 
 
                     |