0

我正在通过 Java 应用程序中的 Apache 的 CSVReader 读取 csv 文件。此 csv 包含一些意大利字符,例如“è”。当我在本地 tomcat 服务器上运行此应用程序时,它会正确读取此类字符。但是当我在远程 Tomcat 服务器上部署相同的应用程序时。然后它将这些字符读取为“?”。

注意:在这两种情况下部署的应用程序是相同的,CSV 文件是相同的,从同一系统访问应用程序。唯一的区别是一个在本地机器上运行,另一个在远程机器上。

我正在通过 InputStreamreader 读取这个文件。任何人都知道可能是什么问题?

4

2 回答 2

1

您似乎错过了指定 CSV 文件编码的字符编码。

http://docs.oracle.com/javase/6/docs/api/java/io/InputStreamReader.html

可能将其指定到 InputStreamReader 的构造函数中可能会解决您的问题。

如果您不指定一个,它将使用默认字符编码,我担心它可能会根据 java 虚拟机而改变,如下所示:

http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/Charset.html#defaultCharset()

于 2013-05-30T16:13:00.880 回答
0

比较区域设置。

在操作系统级别,例如在 Linux 上,这是:

$ echo $LANG de_DE.UTF-8

在 Java 中,检查系统属性中的 file.encoding:

file.encoding=[UTF-8]

如果您不想依赖操作系统中的设置,请在代码中显式传递字符集。

于 2013-05-30T16:20:22.373 回答