使用 SmbFileInputStream 读取 utf-8 编码的数据
use SmbFileInputStream to read data in utf-8 encoding
我有一个包含以下字符串的文件:
Vol conforme à la réglementation
但是,当我使用 SmbFileInputStream 读取文件时,我得到:
Vol conforme � la r�glementation
能否请您告诉我读取此文件的最佳方式,以便我获得原始文件中的字符串。我正在将它转换为 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();
}
您的文件不是 UTF-8 编码的。根据烘焙字符串的输出,它可能是 ISO-8859-1
编码或 Windows cp1252
编码,甚至 ISO-8859-15
.
您应该改为传递这些编码。在您的数据包含一个映射到错误字符的字节之前,您不会很快知道使用这些编码中的哪一种。
欧元符号是一个很好的测试。它在 ISO-8859-1
中不存在,在 cp1252
和 ISO-8859-15
中位于不同的地图位置。
Notepad++ 是一个很棒的工具,可以快速检查不同解码的文件。
我有一个包含以下字符串的文件:
Vol conforme à la réglementation
但是,当我使用 SmbFileInputStream 读取文件时,我得到:
Vol conforme � la r�glementation
能否请您告诉我读取此文件的最佳方式,以便我获得原始文件中的字符串。我正在将它转换为 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();
}
您的文件不是 UTF-8 编码的。根据烘焙字符串的输出,它可能是 ISO-8859-1
编码或 Windows cp1252
编码,甚至 ISO-8859-15
.
您应该改为传递这些编码。在您的数据包含一个映射到错误字符的字节之前,您不会很快知道使用这些编码中的哪一种。
欧元符号是一个很好的测试。它在 ISO-8859-1
中不存在,在 cp1252
和 ISO-8859-15
中位于不同的地图位置。
Notepad++ 是一个很棒的工具,可以快速检查不同解码的文件。