J2EE乱码问题

来源:互联网 发布:摄像头设置软件 编辑:程序博客网 时间:2024/04/29 07:47

最近SSH有个乱码问题。大概问题如下:

<table width="100%" align="center" border="1" class="tb3"><tr class="gridtitle"><td height="20px">角色ID</td><td>角色名称</td><td>英文名称</td><td>角色描述</td><td style="color:#FF0000" align="center">删除</td><td style="color:#FF0000" align="center">修改</td><td style="color:#FF0000" align="center">配置权限</td></tr><s:iterator value="pagebean.list" status="index" var="it">    <s:if test="#index.odd == true"><tr class="gridspan" ></s:if><s:else><tr></s:else><td><s:property value="roleid"/></td><td><s:property value="rolenamecn"/></td><td><s:property value="rolenameen"/></td><td><s:property value="roledescription"/></td><td align="center"><s:a href="roledelete.action?role.roleid=%{#it.roleid}" onclick="return del();"><img src="<%=request.getContextPath() %>/images/btnImg/btn_delete2.gif" border="0" /></s:a></td><td align="center"><s:a href="getupdate.action?role.roleid=%{#it.roleid}"><img src="<%=request.getContextPath() %>/images/btnImg/btn_update.gif" border="0" /></s:a></td><td align="center"><!--问题出在这里 --><s:a href="rolepermitselect.action?rolebean.roleid=%{#it.roleid}&rolebean.rolenamecn=%{#it.rolenamecn}"><img src="<%=request.getContextPath() %>/images/btnImg/btn_power.gif" border="0" /></s:a></td></tr>

代码中<s:a href="rolepermitselect.action?rolebean.roleid=%{#it.roleid}&rolebean.rolenamecn=%{#it.rolenamecn}">页面的内容不是乱码,但是传到后台变成乱码。原因是中文没有转码导致的。

解决方法:

1:修改server.xml

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

加入URIEncoding="UTF-8" 如果你用的是eclipse新建的server而不是tomcat插件的话,最好把servers里面的server.xml 和 tomcat/conf下面的server.xml也改了,测试的时候注意重新发布下,要耐心点,我就是因为测试快了,只是重新启动tomcat导致没测好,结果没有变。后来重新测试下 才起作用。

2.屡试不爽的js encodeURI 和 decodeURI

<head><script type="text/javascript">var arg1=obj.parentNode.parentNode.cells[0].innerHTML;arg1=arg1.replace(/\s/g,''); var arg2=obj.parentNode.parentNode.cells[1].innerHTML;//arg2=encodeURI(encodeURI(arg2));var url="rolepermitselect!select?rolebean.roleid="+arg1+"&rolebean.rolenamecn="+arg2;alert(url);window.location.href = url;return true;</script></head><td align="center"><s:a href="javaScript:void(0);" onclick="changeRolePermit(this);"><img src="<%=request.getContextPath()%>/images/btnImg/btn_power.gif" border="0" /></s:a></td>
在后台用java.net.URLDecoder 

rolebean.setRolenamecn(URLDecoder.decode(rolebean.getRolenamecn(), "utf-8"));

3.基本的编码问题。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><br /

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

后台 request.setEncoding("utf8")

原创粉丝点击