黑马程序员技术交流社区
标题: servlet获取jsp页面from表单中中文文字为乱码 [打印本页]
作者: 刘国强 时间: 2013-4-8 00:07
标题: servlet获取jsp页面from表单中中文文字为乱码
本帖最后由 刘国强 于 2013-4-8 23:21 编辑
从jsp页面获取的from表单提交的数据为乱码,怎么解决
jsp页面代码:- <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
-
- <title>My JSP 'selectClassScoreResualt1.jsp' starting page</title>
-
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css">
- -->
- </head>
-
- <body>
- <center>
- <div>
- <form action="${pageContext.request.contextPath}/control/commons/customer.do?method=selectClassScoreByName" method="post">
- <table>
- <tr>
- <th align="center" colspan="2">根据班级名称查询学生成绩</th>
- </tr>
- <tr>
- <th align="center" colspan="2">
- </th>
- </tr>
- <tr>
- <td>请输入要查询班级的完整名称:</td>
- <td><input type="text" name="cname"/></td>
- </tr>
-
- <tr>
- <td></td>
- <td><input type="submit" value="查询"/></td>
- </tr>
-
- </table>
-
- </form>
- </div>
- </center>
- </body>
- </html>
复制代码 servlet代码- String cname1 = request.getParameter("cname");
复制代码 此处获取后
作者: 黄小贝 时间: 2013-4-8 00:23
我的经验
第一,页面编码改成utf-8,<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
第二,服务器端要么用过滤器,要么直接写死,也是utf-8- response.setContentType("text/html;charset=utf-8");
- request.setCharacterEncoding("utf-8");
复制代码 第三点,最容易忽略,需要更改tomcat服务器的配置,sever.xml里面需要配置,找到server.xml
server.xml 中的
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='utf-8' />
作者: 王大斌 时间: 2013-4-8 01:12
修改tomcat配置文件不太好,在tomcat中,使用的编码为ios8859-1,如果是post提交 可以使用request.setencoding方法去编码实习自动转化,对于get提交可以使用编码再解码的方式 new string(name.getbyes(“iso8859-1”),“gbk”)的方式.这是通用方式
作者: 刘国强 时间: 2013-4-8 23:19
谢谢各位的回复,已经解决了
我是在servlet里面获取数据后,对数据用jsp页面的编码进行重新进行编码,然后就可以得到中文数据了
- String cname1 = request.getParameter("cname");
- String cname = new String(cname1.getBytes("ISO-8859-1"), "GB2312");
-
复制代码 此时的到的数据就是想要的中文数据了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |