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

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"[b][/b] 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配置文件里改了么