使用java读取CSV文件在测试环境中工作正常,但在生产环境中表现不正常

时间:2015-04-20 18:27:46

标签: java csv character-encoding filereader

我使用的CSV文件包含德语和法语的内容。我正在使用文件阅读器通过Java阅读这些文件。它在测试环境中工作正常,但在生产中,csv文件内容在读取后会在某些符号中被更改(我可以在日志中看到)。

1 个答案:

答案 0 :(得分:1)

你永远不应该使用FileReader。它总是使用平台的默认字符集来读取文件。

测试环境中的默认字符集与生产环境中的默认字符集不同。正是由于这个原因,你永远不应该依赖默认的字符集。我假设你知道CSV文件的实际字符集是什么,所以在代码中明确指定它:

String charset = "ISO-8859-1";
Reader csvReader = new BufferedReader(
    new InputStreamReader(new FileInputStream(fileName), charset));

可以找到所有已知字符集的列表here。该链接也出现在Charset类的文档中。