我正在java应用程序中通过Apache的CSVReader读取csv文件。这个csv包含一些意大利字符,如'è'。当我在我的本地tomcat服务器上运行此应用程序时,它正在正确读取这些字符。但是当我在远程Tomcat服务器上部署相同的应用程序时。然后它将这些字符读作'?'。
注意:在两种情况下,部署的应用程序都相同,CSV文件相同,从同一系统访问应用程序。只有区别在于本地计算机上运行,而其他计算机位于远程计算机上。
我正在通过InputStreamreader读取此文件。任何人都知道可能是什么问题?
答案 0 :(得分: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()
答案 1 :(得分:0)
比较区域设置。
在操作系统级别上,例如在Linux上,这是:
$ echo $ LANG de_DE.UTF-8
在Java中,检查系统属性中的file.encoding:
的file.encoding = [UTF-8]
如果您不想依赖操作系统中的设置,请在代码中明确传递charset。