繁体   English   中英

如何使用 Java 处理 UTF-16LE 编码的文本文件? 或将其转换为 ASCII?

[英]How to deal with UTF-16LE encoded text file using Java? or convert it to ASCII?

如果之前有人问过,我很抱歉。 我正在尝试使用 Java 处理文本文件。 文本文件从 MS SQLServer 导出。 当我在 PSPad 中打开它(一种文本编辑器,我可以在其中查看任何十六进制格式的文件),它告诉我我的文本文件是UTF-16LE 因为我是从别人那里得到的,所以很有可能。

现在我的 Java 程序无法处理该格式。 所以我想知道是否有任何方法可以将我的文本文件转换为ASCII格式或进行一些预处理或其他什么? 我可以修改文件。

任何帮助是极大的赞赏。

谢谢。

编辑 1

我编写了这个程序,但它没有按预期工作。 如果我在 PSPad 中看到 output 文件,我可以将每个字符视为 2 字节字符,例如“2”是 3200 而不是 32; 'M' 是 4D00 而不是 4D 等。尽管说 output 文件的编码是 UTF-8。 我在这里有点困惑。 谁能告诉我我做错了什么?

public static void main(String[] args) throws Exception {

        try {
            // Open the file that is the first
            // command line parameter
            FileInputStream fstream = new FileInputStream(
                    "input.txt");
            // Get the object of DataInputStream
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in,"UTF-16LE"));
            String strLine;
            // Read File Line By Line
            while ((strLine = br.readLine()) != null) {
                // Write to the file
                writeToFile(strLine);
            }
            // Close the input stream
            in.close();
        } catch (Exception e) {// Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }

        System.out.println("done.");
    }

    static public void writeToFile(String str) {
        try {
            OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("output.txt", true), "UTF-8");
            BufferedWriter fbw = new BufferedWriter(writer);
            fbw.write(str);
            fbw.close();
        } catch (Exception e) {// Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }
    } 

编辑 2

以下是快照:

PSPad 中的输入文件(免费的十六进制查看器)在此处输入图像描述

PSPad 中的 output 文件在此处输入图像描述

这是我期望看到的:在此处输入图像描述

为字符集 UTF-16LE 创建一个 InputStreamReader,您将一切就绪。

InputStreamReader将让您在 memory 中加载 UTF-16EL。 然后,您可以执行您需要的所有字符串操作。 然后,您可以使用OutputStreamWriter保存为 ASCII 格式。 使用CharSet为 select 格式。

刚刚找到了解决办法。

http://www.fileformat.info/convert/text/utf2utf.htm

允许您在编码之间上传和转换。

但它不是一个永久的解决方案,因为我的文件是 700MB+。 所以我会尝试其他人发布的一些解决方案。

这个小软件有助于:

http://www.kalytta.com/tools.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM