我有一个文件,其中包含以下字符串:
Vol conforme à la réglementation
但是,当我使用SmbFileInputStream读取文件时,我得到:
Vol conforme � la r�glementation
请您告诉我读取此文件的最佳方法,以便我在原始文件中获取String。我正在将它转换为utf-8,我不确定这是正确的方法。这是我正在使用的当前代码:
SmbFileInputStream smbFileInputStream = new SmbFileInputStream(fileURL);
BufferedReader bufferedFileReader = new BufferedReader(new InputStreamReader(smbFileInputStream, "UTF-8"));
String line = null;
StringBuilder stringBuilder = new StringBuilder();
try {
while ((line = bufferedFileReader.readLine()) != null) {
if (!line.trim().isEmpty()) {
stringBuilder.append(line);
}
}
return stringBuilder.toString();
} finally {
bufferedFileReader.close();
}
答案 0 :(得分:0)
您的文件不是UTF-8编码的。根据烘焙字符串的输出,它可能是ISO-8859-1
编码的或Windows cp1252
编码的,甚至是ISO-8859-15
。
您应该通过这些编码。在您的数据包含映射到错误字符的字节之前,知道要使用哪种编码并不是很明显。
欧元符号是一个很好的考验。它在ISO-8859-1
中不存在,位于cp1252
和ISO-8859-15
中的不同地图位置。
Notepad ++是一个很棒的工具,可以快速检查具有不同解码的文件。