该文件似乎以 UTF-8 编码。您应该将其阅读为 UTF-8。
如果您使用java.io.FileReader
and company,则应打开 aFileInputStream
并改用 an InputStreamReader
:
// Before: Reader in = new FileReader(file)
Reader in = new InputStreamReader(new FileInputStream(file), "UTF-8");
如果您正在使用其他方法来读取文件(可能是外部或内部类库?),请查看其文档是否允许指定用于读取文件的文本编码。
更新:如果您已经有一个类似 mojibake 的字符串£97.55
并且无法修复它的读取方式,则重新编码的一种方法是将字符串转换回字节并将字节重新解释为 UTF-8。此过程不需要任何外部“StringUtils”或编解码器库;Java 标准 API 足够强大:
String input = ...obtain from somewhere...;
String output = new String(input.getBytes(/*use platform default*/), "UTF-8");