我尝试使用 FileUtils
更改 txt 文件的编码,但在执行该函数后,我使用 NotePad++ 检查文件的编码,但编码没有变化文件的内容。
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class FileManager {
public void changeFileCharset(File file) throws IOException{
String content = FileUtils.readFileToString(file, "ISO-8859-1");
FileUtils.write(file, content, "UTF-8");
}
public static void main(String[] args) throws IOException {
FileManager fileManager = new FileManager();
fileManager.changeFileCharset(new File("unknown_words.txt"));
}
}
我还使用 BufferedReader
和 BufferedWriter
尝试了此功能,但我什么也没得到。
public static void transform(File source, String srcEncoding, File target, String tgtEncoding) throws IOException {
try (
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(source), srcEncoding));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(target), tgtEncoding)); ) {
char[] buffer = new char[16384];
int read;
while ((read = br.read(buffer)) != -1)
bw.write(buffer, 0, read);
}
}
public static void main(String[] args) throws IOException {
FileManager manager = new FileManager();
File file = new File("test.txt");
File file1 = new File("test1.txt");
manager.transform(file, "UTF-8", file1, "ISO-8859-1");
}
下面两张图片显示了源文件和目标文件的编码:
是NotePad++的字符集检查方法不好还是什么?
有什么想法吗?
请您参考如下方法:
编码不是“加密”(如您所说)。此外,Notepad++ 确定文件使用的编码并不总是那么容易。例如,如果所有内容都是纯ASCII字符,那么UTF-8和ISO-8859-1编码的文件没有区别。
您应该添加一些包含带有法语口音的单词的文本。然后在告诉 Notepad++ 以 UTF-8 和 ANSI 格式读取文件后查看文件,看看哪种编码会产生可读的文本。