可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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();
回答1:
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
}
回答2:
Try this
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(\"outfilename\"), \"UTF-8\"));
try {
out.write(aString);
} finally {
out.close();
}
回答3:
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.
回答4:
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
回答5:
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!\");
// ...
}
回答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:
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.
回答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\");
回答9:
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();
}
}