Tomcat webapplication显示?而不是特殊字符

时间:2016-06-21 07:10:35

标签: java tomcat utf-8 character-encoding filenames

问题

我有一个运行web应用程序的客户端轮询特定目录。 具有特殊字符的文件将这些字符转换为“?”。

示例文件名:java.io.FileNotFoundException: Garc??a.pdf (No such file or directory)

我没有从数据库中获取特定文件名,并且文件在磁盘上具有正确的文件名。我无法在自己的机器上重现它。

Tomcat Startup Params

 [-Dnop] 
 [-Dcatalina.home=/app/tomcat] 
 [-Dcatalina.base=/app/tomcat] 
 [-Djava.io.tmpdir=/app/tomcat/tmp] 
 [-Djava.endorsed.dirs=/app/tomcat/lib-endsed] 
 [-Dep.tomcat.http.port=8080] 
 [-Dep.tomcat.shutdown.port=64006] 
 [-Dep.tomcat.rmi.port=64008] 
 [-Dep.tomcat.sso.enabled=false] 
 [-Djava.security.auth.login.config=/app/tomcat/etc/jaas.config] 

 **[-Dfile.encoding=UTF-8]** 

 [-Dcom.sun.management.jmxremote=true] 
 [-Dcom.sun.management.jmxremote.port=64007] 
 [-Dcom.sun.management.jmxremote.authenticate=true] 
 [-Dcom.sun.management.jmxremote.ssl=false] 
 [-Dspring.profiles.active=production] 
 [-Degrants.configuration=/app/tomcat/etc/test.properties] 
 [-Dops.product=tomcat] 
 [-Dops.node.number=uniq] 
 [-Xms1024m] 
 [-Xmx1024m] 
 [-XX:PermSize=128m] 
 [-XX:MaxPermSize=128m] 
 [-XX:+UseParallelGC] 
 [-XX:+AggressiveOpts] 
 [-XX:+UseFastAccessorMethods] 

文件夹

特定文件夹是使用NFS

的共享空间

Java版

java version "1.6.0_91" 
Java(TM) SE Runtime Environment (build 1.6.0_91-b13) 
Java HotSpot(TM) Server VM (build 20.91-b07, mixed mode) 

System Lang参数

env | grep LANG 
NLS_LANG=American_America.UTF8 

检查字符集/编码

我在答案@ How to Find the Default Charset/Encoding in Java?中添加了代码。日志打印出正在使用的UTF-8:

Default Charset=UTF-8
file.encoding=UTF-8
Default Charset in Use=UTF8 

问题

除了要求客户更改JDK之外我无法真正想到其他事情要做。有什么建议?可能是什么导致了这个?我该如何解决?

更新 - 轮询文件夹

从轮询实际文件系统中提取文件名。我们使用File java类的listFiles()方法来获取文件夹中的文件。 参考:https://docs.oracle.com/javase/6/docs/api/java/io/File.html#listFiles()

0 个答案:

没有答案