怎么也没想过会遇到这种问题,真是太强了!!!!

Roceys 2010-06-28 04:30:00
Struts2中,所有的页面编码完全统一,包括标签、编码、分页、Struts文件配置了过滤器编码等。
但奇怪的问题就来了,其他页面都没有出现乱码,而有一个就出现了,
主要是这样的:
1、第一次提交查询时没乱码,第二次就开始乱码了。
2、而且每一次都要比前一次的字符量增长,全是这格式:陈燕一次比一次长。
一直往下点的结果就是:error:数据大小超出此类型的最大值: 3073;
3、后台再编码一次,第一次乱码,第二次不乱,第三次以后开始与2相同。
4、由原来的post方式改为get方式也行不通。
5、页面都设置了<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" session="false" %>
6、Struts里也设置了<constant name="struts.i18n.encoding" value="UTF-8" />
7、web.xml 里也设置了
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
9、jsp我也重新换过也不行。
10、经过多次测试后发现是在传值时乱码的,值在页面还还没乱码,经过赋值这一步就乱码了。
11、主要困惑就是其他页面为何不乱码,偏偏就一个页面乱码,头都搞大了。
请高手赐教。。。。万分感谢!!!!
...全文
244 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
Roceys 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 person_java 的回复:]
呵呵,结贴都不给分哈
[/Quote]
呵呵,社会是不公平,分只给达到要求的人。这样才有竞争!!!哈哈。。。。
kurama_mail 2010-06-29
  • 打赏
  • 举报
回复
看太快 看错问题了 汗
kurama_mail 2010-06-29
  • 打赏
  • 举报
回复
如果是post和get提交不一致乱码的话,是服务器问题。
请自己去./tomcat-x.x/conf/server.xml添加
disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"(也可能是UTF8 我记的不清楚了)

你们难道没去看过那些解析器原码吗(pst和get并没有统一处理)?
你不知道所有get请求是先被服务器处理后再给你的核心控制器处理的吗?
Roceys 2010-06-29
  • 打赏
  • 举报
回复
TO:say_h1

果然是这问题,细节很重要.非常感谢say_h1的指导!!也谢谢各位.
say_h1 2010-06-29
  • 打赏
  • 举报
回复
看看web.xml中的配置顺序.这点非常重要.希望能对你有所帮助.
Roceys 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 junge2150501 的回复:]
不是服务器的问题吧
[/Quote]
Tomcat5.5
Tomcat6.0
是一样的,应该不是这问题,还是Struts2的问题。
同光和尘 2010-06-29
  • 打赏
  • 举报
回复
不是服务器的问题吧
Roceys 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 feiying0703 的回复:]
JSP应该没错,filter也应该没错,不然第一次就会直接出错
觉得是在java类里面处理这个字符串的时候出错,返回到页面的时候应该错了
再提交一次当然错了
[/Quote]

对就是这原因,按理来第一次对,第二也是同样的处理方式也不应该乱的。
feiying0703 2010-06-29
  • 打赏
  • 举报
回复
JSP应该没错,filter也应该没错,不然第一次就会直接出错
觉得是在java类里面处理这个字符串的时候出错,返回到页面的时候应该错了
再提交一次当然错了
Roceys 2010-06-29
  • 打赏
  • 举报
回复
还有一点细节忘记说了,把提交方式改成get方式 第一次就开始乱码。而post是从第二次开始的。
Roceys 2010-06-29
  • 打赏
  • 举报
回复

<td width="10%" align="right" valign="middle"><span>专家</span></td>
<td width="16%" align="left" valign="middle"><s:textfield name="name" cssClass="input"/></td>



这是导致乱码位置
Roceys 2010-06-29
  • 打赏
  • 举报
回复

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib uri="/tld/pagination.tld" prefix="page"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="contentType" />
<title>null</title>
<link href="./css/css.css" rel="stylesheet" type="text/css" />
<style type="text/css">
a:link{ color:#404040; text-decoration:none;}
a:visited{ color:#404040; text-decoration:none;}
a:hover{ color:#ff7e00; text-decoration:none;}
a:active{ color:#ff7e00; text-decoration:none;}
</style>
</head>
<body>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="icons_333">
<tr>
<td width="103" align="left" valign="top" class="title_4"></td>
<td width="905" align="left" valign="top" class="bg-title"> </td>
<td width="18" align="left" valign="top"></td>
</tr>
</table>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#eaeaea" class="borderweight">
<s:form action="expertSchedulingListcx" method="post">
<tr>
<td width="10%" height="30" align="right" valign="middle"><span>科室</span></td>
<td width="16%" align="left" valign="middle"><label>
<s:select list="tbDicKss" name="ksid" id="ksid" listKey="id" listValue="dmxmc" headerKey="" headerValue="-----全部-----" value="ksid" cssClass="input1"/>
</label></td>
<td width="10%" align="right" valign="middle"><span>专家</span></td>
<td width="16%" align="left" valign="middle"><s:textfield name="name" cssClass="input"/></td>
。。。。。中间省略。。。
<page:page pageId="page" link="expertSchedulingList.action">
显示内容部分略。。。。
<table width="101%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="30" bgcolor="#eaeaea">
<table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td style="border:0px" align="left">           第 <page:currentNumber/> 页/共 <page:totalNumber/> 页</td>
<td style="text-align:right" width="70%" style="border:0px">每页大小 <page:size candidateSizes="10,20,30"/> 跳转 <page:go label="GO"/>  <page:first label="首页"/> <page:previous label="上一页" hideIfFirst="true"/> 
<page:next label="下一页" hideIfLast="true" /> <page:last label="末页"/>           </td>
</tr>
</table>
</td>
</tr>
</table>
</page:page>
happyfmy 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 fzlme5 的回复:]

引用 12 楼 newlife_bj 的回复:
你是什么地方的编码出现错误的啊?是现实数据还是传输的值啊?

首先在文本框输入要查询的值(中文汉字)第一提交不会乱码,
第二次开始就出现如我问题所述。
因为是用的Struts2标签,所以当我们输入值时,Struts2标签会自动感知。
就是这时乱码的。
[/Quote]

代码贴出来 是哪个页面导致乱码的?
Roceys 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 newlife_bj 的回复:]
你是什么地方的编码出现错误的啊?是现实数据还是传输的值啊?
[/Quote]
首先在文本框输入要查询的值(中文汉字)第一提交不会乱码,
第二次开始就出现如我问题所述。
因为是用的Struts2标签,所以当我们输入值时,Struts2标签会自动感知。
就是这时乱码的。
Roceys 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 person_java 的回复:]
你在web.xml里面配置spring里面有个关于字符转换的过滤器,要就自己写一个字符过滤器配置在web.xml里面,我也遇到过lz说的问题,在struts2.xml文件配置关于的那样<constant name="struts.i18n.encoding" value="UTF-8" />
不起作用,个人认为是struts2的一个bug把!
[/Quote]
经过测试把自己写的字符编码过滤器配置进去还是不行。
Roceys 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 huangminyanghe 的回复:]
数据库是可以进行编码的,如果用页面和代码之间的问题的话,可以用escape(字符串)方法转化之后再传试试!
[/Quote]
传值是通过ACtion里的属性与页面Name绑定的,所以这方法不好使。
becameaeagle 2010-06-29
  • 打赏
  • 举报
回复
帮顶 关注中!!!!!!!!
newLife_bj 2010-06-29
  • 打赏
  • 举报
回复
你是什么地方的编码出现错误的啊?是现实数据还是传输的值啊?
Roceys 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 happysmhzp 的回复:]
数据库的设计有问题
[/Quote]
哪方面有问题?
person_java 2010-06-29
  • 打赏
  • 举报
回复
呵呵,结贴都不给分哈
加载更多回复(10)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧