【问题标题】:Convert .txt file in UCS-2 file format将 .txt 文件转换为 UCS-2 文件格式
【发布时间】:2014-03-24 14:37:54
【问题描述】:

我有 .txt 文件,我想将此文件转换为 UCS-2 格式
什么应该是正确的转换方式
文件大约700mb,所以无法在记事本++ n convert中打开

请提出建议。

【问题讨论】:

  • 取决于原文件编码!
  • 没有像ANSI这样的字符编码。你是说ASCII吗?
  • 每当我在 notepad++ 中打开相同的小文件时,都会显示 ANSI 编码
  • 好吧,记事本++错了。没有no像ANSI这样的字符编码

标签: java file-format


【解决方案1】:

好的,所以,首先:Notepad++ 显示的是 ANSI,而 ANSI 不是字符编码。根据this SO answer 和其他人的说法,它似乎是Windows-1252。

至于UCS-2,它已被可以编码更多代码点的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();
}

这应该可行。

【讨论】:

    【解决方案2】:

    /*这是我在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();
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多