问题:在windows平台下用jsp生成静态html页面,显示一切正常,然儿,同样的程序迁移到linux平台下显示内容全为乱码!
在linux上部署J2ee项目时,经常会碰到让人头疼的乱码问题,今天我根据自己的经验整理一下常见的问题和原因:
第一,首先考虑修改linux系统的默认编码,换成gb2312或者gbk,这是基本的基本!
首次安装后i18n文件的配置如下
LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"
#vi/etc/sysconfig/i18n修改该文件的内容#表示被注释了
#LANG="zh_CN.UTF-8"
#SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
#SYSFONT="latarcyrheb-sun16"
LANG="zh_CN.GB2312"
LANGUAGE="zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB2312:zh_CN:zh_CN.UTF-8"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
当然在jsp页面中也可以用
out.print(System.getProperty("file.encoding"));
查看系统的编码,若不对则如上修改!
第二、处理包含汉字字符的字符串时要指定gb2312或者GB2312编码
如:Stringcaption=newString(caption.getBytes("iso-8859-1"),"gb2312");//传递的参数,指定编码
StringtemplateContent="";
FileInputStreamfileinputstream=newFileInputStream(filePath);
//读取模板文件
intlenght=fileinputstream.available();
bytebytes[]=newbyte[lenght];
fileinputstream.read(bytes);
fileinputstream.close();
templateContent=newString(bytes,"GB2312");//指定编码
第三、检查web服务器配置的编码。conf 目录下server.xml中加上或者修改为
<Connectorport="80"
maxThreads="150"minSpareThreads="25"maxSpareThreads="75"
enableLookups="false"redirectPort="8443"acceptCount="100"
debug="0"connectionTimeout="20000"
disableUploadTimeout="true"URIEncoding="GBK"/>
加上URIEncoding="GBK"部分;
说明:针对今天的问题,解决方案关键是第一条