如果之前有人问过,我很抱歉。我正在尝试使用 Java 处理文本文件。文本文件从 MS SQLServer 导出。当我在 PSPad 中打开它(一种文本编辑器,我可以在其中查看任何十六进制格式的文件),它告诉我我的文本文件位于UTF-16LE
. 因为我是从别人那里得到的,所以很有可能。
现在我的 Java 程序无法处理这种格式。所以我想知道是否有任何方法可以将我的文本文件转换为ASCII
格式或进行一些预处理或任何事情?我可以修改文件。
任何帮助是极大的赞赏。
谢谢。
编辑 1
我编写了这个程序,但它没有按预期工作。如果我在 PSPad 中看到输出文件,我可以将每个字符视为 2 字节字符,例如 '2' 是 3200 而不是 32;'M' 是 4D00 而不仅仅是 4D 等。虽然说输出文件的编码是 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 中的输出文件
这是我期望看到的: