作者:狮子_贾寒璐_759 | 来源:互联网 | 2023-07-17 12:44
研究了3天了,心力交瘁服务器:linuxdabian应用服务器:tomcat6服务器字符集为utf-8上传一个文件到服务器,文件名是中文,并且是utf-8格式,服务器上直接查看该文件
研究了3天了,心力交瘁
服务器:linux dabian
应用服务器:tomcat6
服务器字符集为utf-8
上传一个文件到服务器,文件名是中文,并且是utf-8格式,服务器上直接查看该文件时正常的(不是乱码)
可是,在tomcat应用中,读取刚上传的文件,则显示是乱码,导致文件找不到
这是system.properties()打印的环境参数:
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=/usr/sharescm/jdk1.6/jre/lib/amd64
java.vm.version=16.3-b01
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=:
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg=sun.io
user.country=US
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=unknown
java.vm.specification.name=Java Virtual Machine Specification
user.dir=/usr/sharescm/test
java.runtime.version=1.6.0_20-b02
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
java.endorsed.dirs=/usr/sharescm/jdk1.6/jre/lib/endorsed
os.arch=amd64
java.io.tmpdir=/tmp
line.separator=
java.vm.specification.vendor=Sun Microsystems Inc.
os.name=Linux
sun.jnu.encoding=UTF-8
java.library.path=/usr/sharescm/jdk1.6/jre/lib/amd64/se...
java.specification.name=Java Platform API Specification
java.class.version=50.0
sun.management.compiler=HotSpot 64-Bit Server Compiler
os.version=2.6.26-2-amd64
user.home=/root
user.timezOne=
java.awt.printerjob=sun.print.PSPrinterJob
file.encoding=UTF-8
java.specification.version=1.6
user.name=root
java.class.path=.
java.vm.specification.version=1.0
sun.arch.data.model=64
java.home=/usr/sharescm/jdk1.6/jre
java.specification.vendor=Sun Microsystems Inc.
user.language=en
java.vm.info=mixed mode
java.version=1.6.0_20
java.ext.dirs=/usr/sharescm/jdk1.6/jre/lib/ext:/usr...
sun.boot.class.path=/usr/sharescm/jdk1.6/jre/lib/resource...
java.vendor=Sun Microsystems Inc.
file.separator=/
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.isalist=
求大神指教
11 个解决方案
描述具体点,我是在读取文件的时候乱码
还有那些地方有设置字符集的
在server.xml 中的端口号设置节点中加上URIEncoding="GBK"属性
在要得到的字符串前进行转码
如传过来的字符串 String msg="你好";
得到时先转码如:
String newmsg=new String(msg.getBytes("iso8859-1"),"gb2312");