windows server 2003 英文版部署j2ee乱码

来源:互联网 发布:prize软件优势 编辑:程序博客网 时间:2024/05/29 11:19

j2ee的服务器部署的乱码问题,为了防止以后同样问题卡很久,再次记录一下。

问题描述:

在远程虚拟机上安装了windows server 2003的系统,但是是全英文版的,然后在上面安装tomcat7+mysql,准备部署j2ee服务器。

项目问题暂且撇开,因为需求太小,本人需要即负责服务器的开发编码,又要负责服务器的搭建部署工作,所以,在乱码问题上基本上是从头走到尾的。

关于乱码的解决:

首先,在我印象里,一般的乱码问题,都是因为服务器和浏览器之间的编码不一致造成的。

添加拦截器,设置request、response编码,强制对parameter进行转码等,网上有很对很详细的文章,这里不再赘述。


这次遇到的问题比较纠结的是,以前的部署都是在linux下,没有遇到操作系统编码对项目的影响,据网上说法是linux默认的编码就utf8,然后j2ee项目很多都是以uft8为统一格式,所以没有遇到问题。而windows server默认的编码格式是gbk,所以会出现乱码。

然后再网上看关于这个是问题描述,最后找到一些代码:

System.getProperty("file.encoding");//-------条件1
Locale local = Locale.getDefault();
local.getCountry();//------条件2
local.getLanguage();//-------条件3

好吧,按照思路一步步解决吧。


(ps:整个过程搞下来,个人感觉这步其实是不必要的,如果条件2、3的输出跟你在开发机上面的输出一致,那就不需要这一步了应该,但是因为服务器没办法回滚回去,所以没办法进行验证,权当记个汉化方式吧)首先是调整系统的编码格式,参考链接:http://www.zrblog.net/3348.html    ( VPS新手教程⑥:windows2003英文版汉化)

区别在我这边的服务器是公司安装的,i386文件需要的东西应该已经在系统里面了,所以并没有直接弹CD-ROM的框,安装完成后,重启,按照教程对regional and language option 进行设置,由于我在安装语言包之前已经设置过一次了,安装完成后这个选项没有改变,为了设置生效,所以多设置了一次中文(香港XXXX)重启,再设置成中文(中国)重启,然后生效了。到此,条件2条件3解决了。

然后是关于条件1的,这个问题最开始是以为是系统编码的原因,所以我进行了第一步,但是第一步完成后,条件1还是没有变成GBK或者utf8,所以,方向性问题,幸好仔细看了这篇文章:http://blog.csdn.net/raintungli/article/details/6651076   (关于file.encoding的设置问题),我用的是tomcat7,安装版的,jvm的启动参数设置是在注册表里设置的:


运行 regedit
找到注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation
再往下找 Procrun 2.0\Tomcat7\Parameters\Java
有个 Options 设置
-Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 7.0
-Dcatalina.base=C:\Program Files\Apache Software Foundation\Tomcat 7.0
-Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 7.0\endorsed
-Djava.io.tmpdir=C:\Program Files\Apache Software Foundation\Tomcat 7.0\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\logging.properties
双击它进行编辑,在末尾增加下面这两行就搞定了:

-Xms128M
-Xmx1024M

这个是网上摘录的,把末尾追加的替换成  -Dfile.encoding="UTF-8"。

重启tomcat,ok,条件1满足了。

最后进行中文查询测试,java服务器能接收到参数,mysql的默认编码也设置成了utf8,但是还是没办法返回数据,继续追查,最后,发现是mysql的问题,由于mysql是在语文环境下安装的,所以安装时mysql设置成的语言是系统语言,我更改完区域语言后,mysql的设置并不会跟系统一起改变,所以需要进行手动调整。定位到mysql的安装文件,找到my.ini,找到default-character-set=XXXX和character-set-server=XXXX,设置成utf8或者gbk,重启mysql服务,重启tomcat。

到此,我乱码问题,算是解决的差不多。收工。

0 0
原创粉丝点击