来自Apache Commons IO的FileUtils.readFileToString()与Cyrillic的工作不正常

时间:2015-02-12 13:32:24

标签: java encoding cyrillic fileutils

我正在使用FileUtils.readFileToString一次性使用JSON读取文本文件的内容。该文件采用UTF-8编码(无BOM)。然而,我得到的不是西里尔字母而是??????迹象。为什么呢?

public String getJSON() throws IOException
{
    File customersFile = new File(this.STORAGE_FILE_PATH);
    return FileUtils.readFileToString(customersFile, StandardCharsets.UTF_8);
}

2 个答案:

答案 0 :(得分:0)

FileUtils.readFileToStringStandardCharsets.UTF_8不兼容。

相反,尝试

FileUtils.readFileToString(customersFile, "UTF-8");

FileUtils.readFileToString(customersFile, StandardCharsets.UTF_8.name());

答案 1 :(得分:0)

这就是我在2015年解决问题的方式:

public String getJSON() throws IOException
{
//    File customersFile = new File(this.STORAGE_FILE_PATH);
//    return FileUtils.readFileToString(customersFile, StandardCharsets.UTF_8);
    String JSON = "";
    InputStream stream = new FileInputStream(this.STORAGE_FILE_PATH);
    String nextString = "";
    try {
        if (stream != null) {
            InputStreamReader streamReader = new InputStreamReader(stream, "UTF-8");
            BufferedReader reader = new BufferedReader(streamReader);
            while ((nextString = reader.readLine()) != null)
                JSON = new StringBuilder().append(JSON).append(nextString).toString();
        }
    }
    catch(Exception ex)
    {
        System.err.println(ex.getMessage());
    }
    return JSON;
}