无法从java中的CSV文件中读取欧元符号(€)和德语字符,如(ö,ß,ü,ä,Ä)。这里的要点是只有在通过Windows上传CSV文件时才会出现此行为。当我们从Linux机器上传相同的文件时,我们能够看到Character上传成功。我们使用的Linux服务器默认使用UTF-8字符集。我们还尝试将字符集从UTF-8更改为ISO_8859_1,但Linux环境中不支持某些字符集。
代码概述:
代码基本上是一个Rest服务,它接受.csv文件作为多部分表单数据。下面是用于将上载的内容写入文件系统的示例代码。
// Reading file data using multipart-form/data
FormDataBodyPart fileDataBodyPart = multiPart.getField("fileContent");
InputStream fileInputStream = fileDataBodyPart.getValueAs(InputStream.class)
// Writing to a TEMP location
String line = null;
BufferedReader skipLine = new BufferedReader(new InputStreamReader(fileInputStream, StandardCharsets.ISO_8859_1));
OutputStreamWriter writer = new OutputStreamWriter(outputStream, StandardCharsets.ISO_8859_1);
while ((line = skipLine.readLine()) != null) {
line = line + "\n";
writer.write(line);
}