我正在尝试根据此方法的输出以 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
.
此外:
- 文件本身的名称 (
fileName
) 不能被认为是特定的Charset
;有时文件名将包含 UTF-8 字符,有时包含 Windows-1252。文件内容也是如此(但是,如果文件名和文件内容始终具有匹配的字符集)。 - 只有内部的逻辑
getCorrectCharsetToApply()
可以选择要应用的字符集,因此在调用此方法之前尝试按文件名读取文件很可能会导致 Java 尝试使用错误的编码读取文件名......这会导致文件死亡!
提前致谢!