0
Q
.txt文件
A
回答
0
好的,首先:Notepad ++显示ANSI,ANSI不是字符编码。据this SO answer和其他各种,它似乎是Windows-1252。
至于UCS-2,它已被UTF-16取代,它可以编码更多的代码点。无论如何,在定义UCS-2时,它编码的码比Windows-1252更多,所以在这里使用UTF-16就OK了。
但是,与USC-2一样,UTF-16依赖于字节顺序。我们将在这里假设小端。
因此:
final Path src = Paths.get("/path/to/original/file.txt")
final Path dst = Paths.get("/path/to/destination/file.txt");
final char[] buf = new char[1 << 20]; // 1 MB char buffer
int nrChars;
try (
final BufferedReader reader = Files.newBufferedReader(src,
Charset.forName("windows-1252"));
final BufferedWriter writer = Files.newBufferedWriter(dst,
StandardCharsets.UTF_16LE, StandardOpenOption.CREATE);
) {
while ((nrChars = reader.read(buf, 0, buf.length)) != -1)
writer.write(buf, 0, nrChars);
writer.flush();
}
这应该工作。
0
/*这是我在java中如何实现它如上*/
PrintWriter writer = new PrintWriter("destinationfile.txt",
"UTF-16LE");
writer.write("\uFEFF");
File srcfile = new File("sourceFile.txt");
FileReader fileReader = new FileReader(srcfile);
BufferedReader br = new BufferedReader(fileReader);
String line;
try {
while ((line = br.readLine()) != null) {
writer.write(line);
writer.write("\r\n");
}
writer.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
相关问题
- 1. 从.txt文件
- 2. 从txt文件
- 3. TXT文件
- 4. 在TXT文件
- 5. 从txt文件
- 6. 熵txt文件
- 7. 从.txt文件
- 8. 从.txt文件
- 9. 在txt文件
- 10. 从.txt文件
- 11. 从.txt文件
- 12. 从txt文件
- 13. 一个txt文件
- 14. 写入TXT文件?
- 15. 加载.txt文件
- 16. 从线txt文件
- 17. 打开txt文件
- 18. 解析txt文件
- 19. txt文件删除
- 20. VBA - 从.txt文件
- 21. 存储txt文件
- 22. 读取.txt文件
- 23. 覆盖.txt文件
- 24. 从txt文件UNIX
- 25. 阅读txt文件
- 26. 解析.txt文件
- 27. 扫描.txt文件
- 28. C++ - 从.txt文件
- 29. 名为.txt文件
- 30. 读取.txt文件
取决于原始文件编码几乎一样! – fge
原文为ANSI –
没有像ANSI那样的字符编码。你的意思是ASCII吗? – fge