我有一堆用UTF-8
编码的文本文件。文件中的文本如下所示:\x6c\x69b/\x62\x2f\x6d\x69nd/m\x61x\x2e\x70h\x70
。
我已经复制了所有这些文本文件,并将它们放入目录/convert/
。
我需要读取每个文件并将编码的文字转换为字符,然后保存文件。 filename.converted.txt
最聪明的做法是什么?如何转换为新文本?是否有处理Unicode文本的函数在文字类型之间进行转换?我应该使用不同的编程语言吗?
这就是我现在所拥有的:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
public class decode {
public static void main(String args[]) {
File directory = new File("C:/convert/");
String[] files = directory.list();
boolean success = false;
for (String file : files) {
System.out.println("Processing \"" + file + "\"");
//TODO read each file and convert them into characters
success = true;
if (success) {
System.out.println("Successfully converted \"" + file + "\"");
} else {
System.out.println("Failed to convert \"" + file + "\"");
}
//save file
if (success) {
try {
FileWriter open = new FileWriter("C:/convert/" + file + ".converted.txt");
BufferedWriter write = new BufferedWriter(open);
write.write("TODO: write converted text into file");
write.close();
System.out.println("Successfully saved \"" + file + "\" conversion.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
答案 0 :(得分:3)
(看起来有些混淆你的意思 - 这个答案假定输入文件完全是ASCII,并使用“\ x”对任何不在ASCII范围内的字节进行十六进制编码。)
听起来像UTF-8的一部分实际上是无关紧要的。您可以将其视为输出的不透明二进制数据。假设输入文件完全是ASCII:
FileInputStream
中的InputStreamReader
指定编码“US-ASCII”)FileOutputStream
)char
到byte
的情况)然后你将拥有一个“普通”的UTF-8文件,任何支持UTF-8的文本编辑器都可以读取该文件。
答案 1 :(得分:0)
java.io.InputStreamReader可用于将来自任意字符集的输入流转换为Java char
。不过,我不确定你想怎么写它。您是否希望将非ASCII字符写为ASCII Unicode转义序列?