我有.txt文件,我想将此文件转换为UCS-2格式
什么应该是正确的转换方式
文件大约是700mb,因此无法在Notepad ++ n convert
请建议。
答案 0 :(得分:0)
好的,首先:Notepad ++显示ANSI,ANSI不是字符编码。根据{{3}}和其他各种情况,它似乎是Windows-1252。
对于this SO answer,它已经被UTF-16取代,它可以编码更多的代码点。无论如何,在定义UCS-2时,它编码的代码点数比Windows-1252多,所以在这里使用UTF-16就可以了。
然而,像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();
}
这应该有用。
答案 1 :(得分: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();
}