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配置文件里改了么