黑马程序员技术交流社区
标题:
jsp中乱码的问题
[打印本页]
作者:
CrazyProgram
时间:
2013-4-13 15:39
标题:
jsp中乱码的问题
本帖最后由 CrazyProgram 于 2013-4-13 18:50 编辑
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page isELIgnored="false" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<script type="text/javascript">
function fy(){
var currentPageNum = document.getElementById("inputId").value;
//alert(currentPageNum);
var url = "/crm/CrmServlet?method=findAllCustomer¤tPageNum="+currentPageNum;
window.location.href=url;
}
function deleteAll(){
var tableIdElement = document.getElementById("tableId");
var size = tableIdElement.rows.length;//长度为6
var ids="";
for(var i=1;i<=size-2;i++){
var checkboxElement = tableIdElement.rows[i].cells[0].firstChild;
if(checkboxElement.checked){
ids +=checkboxElement.value+"_";
}
}
if(ids.length>0){
//alert(ids); //打印是"1_2_3_";
url="/crm/CrmServlet?method=deleteAllCustomerById&ids="+ids;
window.location.href = url;
}else{
alert("请选择需要删除的状态");
}
}
</script>
<table id="tableId" border="1" align="center">
<caption><h1>客户信息</h1></caption>
<tr>
<th>状态</th>
<th>姓名</th>
<th>性别</th>
<th>地址</th>
<th>电话</th>
<th>邮箱</th>
<th>生日</th>
</tr>
<c:forEach var="customer" items="${page.crmList}">
<tr>
<th><input type="checkbox" value="${customer.id }"/></th>
<th>${customer.name }</th>
<th>${customer.gender }</th>
<th>${customer.address }</th>
<th>${customer.tel }</th>
<th>${customer.email }</th>
<th>${customer.birthday }</th>
<th><a href="/crm/CrmServlet?method=findCustomerInfo&id=${customer.id }" style="text-decoration: none">[编辑]</a></th>
</tr>
</c:forEach>
<tr>
<td colspan="7" align="center">
<input type="text" name="currentPageNum" size="1" id="inputId"/>
<input type="button" value="Go" onclick="fy()"/>
<input type="button" value="删除" onclick="deleteAll()"/>
<!-- 当前第${page.currentPageNum }页/共${page.allPageNum }页
这句话一加进去,就显示不了了,乱码了,求解决
-->
</td>
</tr>
</table>
</body>
</html>
复制代码
作者:
huima
时间:
2013-4-13 15:50
这里有三种方法:
第一种:接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8");
这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。
第二种: 在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用 String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。
这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。
第三种: 为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp进行编码处理。
新手可以暂时不考虑过滤器的方法,过滤器一般都会涉及到配置开发,要修改web.xml,还算是比较麻烦的,建议接触java一段时间后再考虑使用过滤器的方法。或者如果应用了struts框架,可以查看struts的转码过滤器配置。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2