通过Tomcat服务器读取意大利语字符错误



我在java应用程序中通过Apache的CSVReader读取csv文件。此csv包含一些意大利字符,如'è'。当我在本地tomcat服务器上运行这个应用程序时,它可以正确地读取这些字符。但是当我在远程Tomcat服务器上部署相同的应用程序时。然后它把这些字符读成'?'。

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

我正在通过InputStreamreader读取这个文件。有人知道是什么问题吗?

您可能没有指定对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 ()

比较区域设置

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

$ echo $LANGde_DE。utf - 8

在Java中,检查文件。系统属性中的编码:

file.encoding = (utf - 8)

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

最新更新