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