使用SmbFileInputStream以utf-8编码读取数据

时间:2016-03-18 01:41:14

标签: java file utf-8 character-encoding fileinputstream

我有一个文件,其中包含以下字符串:

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();
    }

1 个答案:

答案 0 :(得分:0)

您的文件不是UTF-8编码的。根据烘焙字符串的输出,它可能是ISO-8859-1编码的或Windows cp1252编码的,甚至是ISO-8859-15

您应该通过这些编码。在您的数据包含映射到错误字符的字节之前,知道要使用哪种编码并不是很明显。

欧元符号是一个很好的考验。它在ISO-8859-1中不存在,位于cp1252ISO-8859-15中的不同地图位置。

Notepad ++是一个很棒的工具,可以快速检查具有不同解码的文件。