现在的位置: 首页 > 综合 > 正文

J2EE乱码问题

2017年11月24日 ⁄ 综合 ⁄ 共 2453字 ⁄ 字号 评论关闭

最近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")

【上篇】
【下篇】

抱歉!评论已关闭.