日期:2014-05-17 浏览次数:20629 次
之前我们解决servlet页面显示乱码的解决方案是:response.setContentType("text/html;charset=gbk");这样只能保证:你在servlet写的中文能够被显示,但是:如果是从html页面得到的中文数据呢?不知道大家有没有测试过?
?
? 我今天测试了下:当我在html登录界面输入学校的名字:湖南大学,servlet通过request对象,调用其getParameter("表单中组件的名字")来获得用户名,显示到界面上时却是乱码。后面想了下,我觉得可能是:request对象没有设置其字符编码:在此基础上:我添加了一行代码:request.setCharacterEncoding("gbk");测试之后,还是乱码!!
?
后面我又修改了下代码:将字符串先转换成字节数组,然后再将其用"gbk"编码String schoolName=request.getParameter("schoolName").toString();
byte [] sn=schoolName.getBytes();
String name=new String(sn,"gbk");
但是,还是乱码?
?
后面查了下资料:通过修改tomcat目录下config文件夹中的server.xml文件
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
?
将其修改成:
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="gbk"/>
?这样就不会出现乱码问题了,而且也不需要写:response.setContentType("text/html;charset=gbk");以及request.setCharacterEncoding("gbk");
当需要修改端口号时,把8080端口号换下,就可以了。