html页面表单向servlet提交中文数据乱码问题

之前我们解决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端口号换下,就可以了。

你可能感兴趣的:(servlet)