如何使用特定字符编码在Java中读取文件?
2022-09-01 14:21:25
我正在尝试以UTF-8或Windows-1252的形式读取文件,具体取决于此方法的输出:
public Charset getCorrectCharsetToApply() {
// Returns a Charset for either UTF-8 or Windows-1252.
}
到目前为止,我有:
String fileName = getFileNameToReadFromUserInput();
InputStream is = new ByteArrayInputStream(fileName.getBytes());
InputStreamReader isr = new InputStreamReader(is, getCorrectCharsetToApply());
BufferedReader buffReader = new BufferedReader(isr);
我遇到的问题是将实例转换为.BufferedReader
FileReader
此外:
- 不能将文件本身的名称 () 信任为特定 ;有时文件名将包含 UTF-8 字符,有时包含 Windows-1252。文件的内容也是如此(但是,如果文件名和文件内容始终具有匹配的字符集)。
fileName
Charset
- 只有内部的逻辑才能选择要应用的字符集,因此在调用此方法之前尝试按文件名读取文件可能会导致Java尝试使用错误的编码读取文件名...这导致它死亡!
getCorrectCharsetToApply()
提前致谢!