日期:2014-05-17  浏览次数:20648 次

Java上传文件至linux系统文件名乱码。
   linux系统: AIX
   JAVA使用的是GBK  服务器webshare
   
   问题现象:只是中文文件名乱码成?? 形式。文件里面的中文内容没有乱码

   问题补充:

   1.虽然上传上去的中文文件名是乱码, 但是可以通过Java程序根据文件名又下载下来,文件名存放到数据库是好的。


   2。linux的 locale信息:

   LANG=en_US
   LC_COLLATE="en_US"
   LC_CTYPE="en_US"
   LC_MONETARY="en_US"
   LC_NUMERIC="en_US"
   LC_TIME="en_US"
   LC_MESSAGES="en_US"
   LC_ALL= 
  3。我不想修改这些服务器上面的locale信息,因为还有其他程序需要部署到服务器上,(有没有一个方法指定Java程序使用一个特定的环境变量的字符?)

  各位大牛看看,唯独文件名乱码 很奇怪啊。当初也使用过 new(str,'字符编码格式')转过,但是不行 转过之后文件都不能正常处理。
   

------解决方案--------------------
必须改LOCAL信息。

export LC_ALL=zh_CN.GBK
上传时还要注意设TOMCAT的server.xml

<Connector protocol="org.apache.coyote.http11.Http11Protocol"
           port="9090" minSpareThreads="5" maxSpareThreads="75"
           enableLookups="true" disableUploadTimeout="true" 
           acceptCount="100"  maxThreads="200"
           scheme="https" URIEncoding="UTF-8" useBodyEncodingForURI="true" secure="true" SSLEnabled="true"
           keystoreFile="conf/serverkey80.jks" keystorePass="111111"
     truststoreFile="conf/ca.jks" truststorePass="111111"
           clientAuth="false" sslProtocol="TLS" />

如果是csv在export时还要:
fos.write(0xFEFF); 
------解决方案--------------------
这个是操作系统存文件时就出错了,web服务器找不到文件……重构成英文文件名或者拼音或者其他什么的吧。。。
------解决方案--------------------
tomcat中的server.xml配置文件里改了么