我尝试使用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 ++的charset check方法是不好的,还是什么?
有什么想法吗?
答案 0 :(得分:1)
编码不是“加密”(正如你所说)。此外,Notepad ++并不总是很容易确定文件使用的编码。例如,如果所有内容都是纯ASCII字符,则UTF-8和ISO-8859-1编码文件之间没有区别。
您应该添加一些包含带法语口音的单词的文字。然后在告诉Notepad ++将它们读作UTF-8和ANSI后查看文件,并查看哪些编码结果是可读文本。