struts2中文乱码问题
中文乱码解决大全

SSH开发过程中的中文问题汇总作者:Rainisic来源:博客园发布时间:2012-01-11 14:26 阅读:50 次原文链接[收藏]在使用SSH开发的过程中,我们经常会因为各种各样的中文乱码问题而苦恼。
之前开发的过程中遇到过一些,但是都没有记录下来,这次,我就遇到的中文问题进行一个汇总,希望能够对大家有所帮助。
1. 平台环境参数操作系统:Windows 7 旗舰版64位JDK版本:JDK 1.6 / JDK 1.7 (此处由于JDK 7 发布不久,所以对两个版本进行测试)开发环境:Eclipse Java EE Indigo网站容器:Tomcat 7.0开发框架:Struts 2.3.1.1-GASpring 3.1.0-releaseHibernate 4.0.0-Final / Hibernate 3.6.9-Final (此处由于Hibernate 4 final 刚刚发布不久,所以对两个版本进行测试)2. 中文问题汇总(1)HTML中未指定文件编码问题描述:在HTML中未指定文件编码,在部分浏览器中将会出现中文乱码。
解决方案:在HTML的head标签中指定文档编码,代码如下(请根据DOCTYPE选择):// HTML 4.01 Transitional<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">// HTML 5<meta charset="UTF-8">(2)表单提交使用GET方法问题描述:在HTML form 中提交表单的时候使用method="get"导致中文乱码。
解决方案:form表单的method设置为post,代码如下:<form action="test" method="post"><input type="submit"/></form>(3)JSP文件中未指定文档编码类型问题描述:在JSP文件中未指定JSP文档编码,在浏览器中会出现中文乱码。
乱码处理方法

1.在form中提交参数出现乱码解决方法:在struts.xml中配置<constant name="struts.i18n.encoding"value="GBK"></constant>这是个配置文件常量配置,但是有的配置了还是乱码,那就是因为你的struts2.1.7一下的版本的事,这个配置在2.1.7以上的才有效。
2.在用url传值时出现乱码解决方法:在服务容器内修改配置,我用的是tomcat服务器,修改server.xml的配置<Connector port="808" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" URIEncoding="GBK" />就这两种常见的乱码问题,后一种的解决方法有些欠妥,因为这样解决依赖了服务容器,离开容器还要就会失效,在网上有这样的解决方法,就是在web.xml配置文件中配置过滤get传的参数,但是很多过滤器只是针对post 的,还没有见过过滤get的配置方法,在这里希望大家一起努力彻底解决ssh 传值乱码的问题。
在spring.jar包的org.springframework.web.filter包下有个CharacterEncodingFilter.java 把spring.jar放进工程的lib里,然后在web.xml文件中<servlet>元素前加以下代码:<filter><filter-name>Spring character encoding filter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param><param-name>encoding</param-name><param-value>GBK</param-value></init-param></filter><filter-mapping><filter-name>Spring character encoding filter</filter-name><url-pattern>/*</url-pattern></filter-mapping>不用对页面有任何改动就可实现正确显示中文!1.设置服务器的URIEncoding="utf-8"(server.xml);2.设置mysql中my.ini中两个编码为utf83.新建struts.properties,写上struts.i18n.encoding=UTF-84.设置连接mysql的url为: jdbc:mysql://localhost。
学习struts2——常见问题与处理

学习struts2.2.1遭遇滑铁卢~~~~~好多异常~~~~~好多bug~~~~好多问题~~~~~~好多困难~~~好多肥羊~~~一、Filter mapping specifies an unknown filter name ----filter标签在web.xml 里的顺序<filter-mapping><filter-name>adminOperateLogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>adminOperateLogFilter</filter-name><filter-class>com.berheley.exam.web.filter.AdminOperateLogFil ter</filter-class></filter>这样写启动服务器时报错 Filter mapping specifies an unknown filter nameadminOperateLogFilter将这两块换个顺序就没问题了,web.xml信息的加载是有顺序的,filter在mapping之前必须要让服务器找到其定义。
<filter><filter-name>adminOperateLogFilter</filter-name><filter-class>com.berheley.exam.web.filter.AdminOperateLogFil ter</filter-class></filter><filter-mapping><filter-name>adminOperateLogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>二、ng.IllegalArgumentException: Filter mapping specifies an unknown filter nameStruts2答:“Struts2”?大写的?are you sure?我猜你一定是看了某struts2.0的权威指南(那是一个chm文件电子书,而且你看的可能是翻译成中文的),我不知道英文版的有没有写错,但是我检查了很久后才发现中文版存在这个大小写错误。
jsp页面传值中文乱码 网页乱码 jsp过滤器过滤乱码等乱码处理办法

一、jsp页面间传值中文乱码问题解决办法<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <form action="b.jsp">name:<input type=text name=name><input type=submit></form>b.jsp页面内容:<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <%String name=request.getParameter("name");%><body><%=name%></body>现象:中文乱码,比如“??????”解决方法如下:方法一:1. 在b.jsp中把pageEncoding="GB2312"改为pageEncoding="ISO885Array-1"虽然这样b.jsp页面显示的内容还是乱码,但是不是那种“??????”的乱码,而是一些特殊字符2. 然后在浏览器中查看菜单中修改成GB2312的编码,这时乱码就显示中文了。
3. 但是这种方法是不可行的。
方法二:( 已经验证可行)1. 在b.jsp中把String name=request.getParameter("name");修改为String name=new String(request.getParameter("name").getBytes("ISO-885 Array-1"),"GB2312");2. 这时再在页面上显示,则就是中文了。
中文参数乱码问题解决方案(精选5篇)

中文参数乱码问题解决方案(精选5篇)第一篇:中文参数乱码问题解决方案问题1:在使用tomcat服务器时,如在跳转路径中传递中文参数会出现乱码现向!如:以和两种方式提交的变量flag在LoginServlet中用request.getParameter(“flag”);时就会出现乱码问题。
解决:在tomcat/conf/servlet.Xml中加入一段代码:debug=“0” connectionTimeout=“20000”disableUploadTimeout=“true” URIEncoding=“true”/>问题2:如果uri中转递的是参数要发送到jsp页面,则必须在接受代码的jsp页面里面还要加入代码:问题3:在jsp页面里的代码修正://如不注明是post方式则默认是get方式问题4:在servlet中的代码修正在doPost方法里面最上面的位置加上如下代码:response.setCharacterEncoding(“gb2312”);request.setCharacterEncoding(“gb2312”);第二篇:struts2 action接收到的参数中文乱码的问题struts2 action接收到的参数中文乱码的问题(2011-06-16 10:55:44)转载标签:分类:技术收藏utf-8 乱码 gb2312 字符集编码方法杂谈中文乱码,首先要区分是页面乱码、action乱码,还是数据库乱码。
大致的原理是java使用unicode编码-->window使用gbk(gb2312的扩展集)--mysql默认使用utf-8(unicode的一种编码方法),这样转来转去就乱码了^_^。
解决方法如下:1.在struts2里面,最好将所有字符都设成utf-8。
1.1 在jsp页面设定字符编码。
这边有必有说明的是如果是jsp+java bean+servlet 的方案,中文乱码很好解决,统一设成gb2312就可以了。
struts2

/topic/128973struts2表单标签1、struts资源文件中文解决方法在命令行中输入以下命令native2ascii -encoding gb2312 ApplicationResources.properties ApplicationResourcesgbk.properties第一个文件为资源文件,第二个为新生成的文件,将新生成的文件拷入工程就可以了2、开发struts2流程1.创建web工程2.拷贝commons-fileupload-1.2.1.jar,commons-logging-1.0.4.jar,freemarker-2.3.13.jar,ognl-2.6.11.jar,struts2-core-2.1.6.jar,xwork-2.1.2.jar,放入web-inf--lib中3.在web.xml文件中添加struts2的核心Filter,过滤客户端发送过来的请求,代码如下<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>org.apache.struts2.dispatcher.FilterDispatcher为struts2中提供的一个控制器4.创建struts.xml文件,放在src目录下.代码如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="strutsqs" extends="struts-default"></package></struts>5.在src目录下创建一个类,创建几个属性及对应的get,set方法6.创建public String execute() throws Exception方法,7.在struts.xml文件中添加如下代码:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="strutsqs" extends="struts-default"><action name="login" class="ers.action.LoginAction"><result name="success">/Main.jsp</result><result name="failed">/Login.jsp</result></action></package></struts>3、创建拦截器:1.创建类继承AbstractInterceptor,覆盖intercept方法,代码如下public String intercept(ActionInvocation invocation) throws Exception {LoginAction action=(LoginAction)invocation.getAction();String result=invocation.invoke();return null;}2.在struts.xml文件中配置如下<package name="strutsqs" extends="struts-default"><interceptors><interceptor name="myInterceptor" class="ers.interceptor.LoginInterceptor"> <param name="name">简单拦截器</param></interceptor></interceptors><action name="login" class="ers.action.LoginAction"><result name="success">/Main.jsp</result><result name="failed">/Login.jsp</result><result name="input">/Login.jsp</result><interceptor-ref name="myInterceptor"></interceptor-ref></action></package>也可以创建拦截器栈<interceptors><interceptor name="myinterceptor1"class="com.haitian.bbs.interceptor.MyInterceptor"></interceptor> <interceptor name="myinterceptor2"class="com.haitian.bbs.interceptor.MyInterceptor2"></interceptor> <interceptor-stack name="stack1"><interceptor-ref name="myinterceptor2"></interceptor-ref><interceptor-ref name="myinterceptor1"></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors>4.标签中引用资源文件内容<s:textfield name="age" key="regist.age" value="%{getText('regist.password')}"></s:textfield><s:select list=”#{‘1’:getText(‘sex.man’),’0’:getText(‘sex.women’)}”<s:text name=”bel”/>5.创建资源文件在src下创建messageResource_zh_CN.properties文件在src下创建struts.properties文件,添加struts.custom.i18n.resources=messageResource_zh_CN 6.Action中访问servlet APIActionContext ctx=ActionContext.getContext();ctx.getApplication()获得application对象ctx.put(“”,””);//相当于request.setAttribute(“”,””);ctx.getSession()//获得session对象get(Object key);//类似于调用HttpServletRequest的getAttribute(String name);方法Map getApplication();返回一个Map对象,该对象模拟了应该的ServletContext实例Map getSession();返回一个Map对象,该Map对象模拟了HttmpSession实例Map getParameters();获取所有的请求参数,类似于调用HttpServletRequest对象的getParameterMap方法Void setSession(Map session);直接传入一个Map实例,将实例里的key-value对转换成session的属性名\属性值HttpServletRequest request=ServletActionContext.getRequest();7.Action访问资源文件Action 继承ActionSupport调用this.getText(“ername”);Jsp访问资源文件<s:text name=”bel”/>8.资源文件_各国代码资源文件命名格式:baseName_language_country.propertiesLocale[] localeList=Locale.getAvailableLocales();for(int i=0;i<localeList.length;i++){System.out.println(localeList[i].getDisplayCountry()+”=”+localeList[i].getCountry()+””+localeList[i ].getDisplayLanguage()+”=”+localeList[i].getLanguage());}9.将struts.xml分开在struts.xml中添加如下代码,将其它配置文件导入<struts><include file=”struts-part1.xml”/>..</struts>被包含的配置文件是标准的struts2配置文件,一样包含dtd 信息、strut2配置文件的根元素,此时struts.xml文件中不能再定义action10全局结果result<global-results><result name="">/te.jsp</result></global-results>11模型驱动1创建一个JavaBean,生成setter,getter方法2创建action类实现ModelDriven接口12.创建拦截器1创建类继承AbstractInterceptor,覆盖intercept(ActionInvocation invocation)方法2. ActionContext ac=arg0.getInvocationContext();Map session=ac.getSession();获得session对象Object obj=session.get(“CURRENTUSERBEAN”);//获得session中是否存在此对象If(obj==null)没有登陆过Return “login”;ElseReturn invocation.invoke();3.LoginAction la=(LoginAction)invocation.getAction();获得被拦截的Action 实例4.String result=invocation.invoke();调用execute方法,将拦截方法返回的字符串做为拦截器的返回值或者返回其它字符串,此字符串与struts.xml文件中的result标签中的结果对应。
如何解决乱码问题总结

</filter-mapping>
3.URL中的中文问题
对于直接通过在URL中传递中文参数,如“http://localhost/a.jsp?str=中文”这样的get请求,在服务端用request.getParameter("name")时返回的往往是乱码。按以上的做法设置Filter没有用,用request.setCharacterEncoding("gbk")的方式,仍然不管用。
httpServletResponse.setContentType("text/html;charset=gbk")),最好同时在JSP页面的head部分加上<meta http-equiv="Content-Type" content="text/html;charset=gbk">
·在每次要输出中文的地方主动转换编码方式,比如要在页面中输入“中文”二字,就可以用以下方式:
<%
String str="中文";
byte[] tmpbyte=str.getBtyes("ISO-8859-1");
str=new String(tmpbyte);
out.print(str);
%>
2.获取表单提交的数据时的中文乱码问题
%>
<html>
<head>
<title>中文Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
datetimepicker中文乱码

Struts2?datetimepicker?日期乱码在使用 Struts2 dateTimePicker 控件时, 9月份后会出现乱码现象。
(本人以struts2-dojo-plugin-2.2.1为例子)请替换或直接修改以下文件(并保存为UTF-8格式):struts2-dojo-plugin-2.2.1.jar\org\apache\struts2\static\dojo\nls\dojo _zh.js 和?dojo_zh-cn.js 文件1. 文件"dojo_zh.js"------------------------------------------------------------------------------dojo.provide("nls.dojo_zh");dojo.provide("dojo.i18n.calendar.nls.greg orian");dojo.i18n.calendar.nls.gregorian._built=true;dojo.provide("dojo.i18n.calendar.nls.gregorian.zh");dojo.i18n.calenda r.nls.gregorian.zh= {"days-standAlone-narrow":["日","一","二","三","四","五","六"],"eras":["公元前","公元"],"am":"上午","months-format-abbr":["一月","二月","三月","四月","五月","六月","七月"," 八月","九月","十月","十一月","十二月"],"days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"pm":"下午","months-format-wide":["一月","二月","三月","四月","五月"," 六月","七月","八月","九月","十月","十一月","十二月"],"months-standAlone-narrow":["1月","2 月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"days-format- wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-weekday":"Day of the Week","dateFormat-medium":"yyyy MMM d","field-second":"Second","field-week":"Week","timeFormat-full":"HH: mm:ssz","field-year":"Year","field-minute":"Minute","timeFormat-medium":"H H:mm:ss","field-hour":"Hour","dateFormat-long":"yyyy MMMMd","field-day":"Day","field-dayperiod":"Dayperiod","field-month":"Mon th","dateFormat-short":"yy/MM/dd","field-era":"Era","timeFormat-short ":"HH:mm","timeFormat-long":"HH:mm:ss z","dateFormat-full":"EEEE, yyyy MMMM dd","field-zone":"Zone"};dojo.provide("dojo.i18n.calendar.nls.gregorianExtras"); dojo.i18n.calendar.nls.gregorianExtras._built=true;dojo.provide("dojo.i18n.calendar.nls.gregorianExtras.zh");dojo.i18n.c alendar.nls.gregorianExtras.zh= {"dateFormat-yearOnly":"yyyy'年'"};dojo.provide("dojo.i18n.calendar.nls.gregorian");dojo.i18n.calend ar.nls.gregorian._built=true;dojo.provide("dojo.i18n.calendar.nls.gregorian.zh");dojo.i18n.calenda r.nls.gregorian.zh= {"days-standAlone-narrow":["日","一","二","三","四","五","六"],"eras":["公元前","公元"],"am":"上午","months-format-abbr":["一月","二月","三月","四月","五月","六月","七月"," 八月","九月","十月","十一月","十二月"],"days-format-abbr":["周","months-format-wide":["一月","二月","三月","四月","五月"," 六月","七月","八月","九月","十月","十一月","十二月"],"months-standAlone-narrow":["1月","2 月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"days-format- wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-weekday":"Day of the Week","dateFormat-medium":"yyyy MMM d","field-second":"Second","field-week":"Week","timeFormat-full":"HH: mm:ssz","field-year":"Year","field-minute":"Minute","timeFormat-medium":"H H:mm:ss","field-hour":"Hour","dateFormat-long":"yyyy MMMMd","field-day":"Day","field-dayperiod":"Dayperiod","field-month":"Mon th","dateFormat-short":"yy/MM/dd","field-era":"Era","timeFormat-short ":"HH:mm","timeFormat-long":"HH:mm:ss z","dateFormat-full":"EEEE, yyyy MMMMdd","field-zone":"Zone"};dojo.provide("dojo.widget.nls.TimePicker");d ojo.widget.nls.TimePicker._built=true;dojo.provide("dojo.widget.nls.T imePicker.zh");dojo.widget.nls.TimePicker.zh={"any":"any"};dojo.provi de("dojo.widget.nls.DropdownTimePicker");dojo.widget.nls.DropdownTime Picker._built=true;dojo.provide("dojo.widget.nls.DropdownTimePicker.z h");dojo.widget.nls.DropdownTimePicker.zh={"selectTime":"Selecttime"} ;dojo.provide("dojo.widget.nls.DropdownDatePicker");dojo.widget.nls.D ropdownDatePicker._built=true;dojo.provide("dojo.widget.nls.DropdownD atePicker.zh");dojo.widget.nls.DropdownDatePicker.zh={"selectDate":"S elect adate"};2. 文件"dojo_zh-cn.js"------------------------------------------------------------------------------dojo.provide("nls.dojo_zh-cn");dojo.provide("dojo.i18n.calendar.nls.gregorian");dojo.i18n.calen dar.nls.gregorian._built=true;dojo.provide("dojo.i18n.calendar.nls.gregorian.zh_cn");dojo.i18n.cale ndar.nls.gregorian.zh_cn={"dateFormat-medium":"yyyy-M-d","field-second":"秒钟","field-week":" 周","timeFormat-full":"ahh'时'mm'分'ss'秒' z","field-year":"年","field-minute":"分钟","timeFormat-medium":"ahh:mm:ss","field-hour":"小时","dateFormat-long":"yyyy'年'M'月'd'日 '","field-day":"日","field-dayperiod":"上午/下午","field-month":" 月","dateFormat-short":"yy-M-d","field-era":"时期","timeFormat- short":"ah:mm","timeFormat-long":"ahh'时'mm'分'ss'秒'","dateFormat- full":"yyyy'年'M'月'd'日'EEEE","field-weekday":"周天","field-zone":"区域","days-standAlone-narrow":["日","一","二","三","四","五","六"],"eras":["公元前","公元"],"am":"上午","months-format-abbr":["一月","二月","三月","四月","五月","六月"," 七月","八月","九月","十月","十一月","十二月"],"days-format-abbr":["周","months-format-wide":["一月","二月","三月","四月"," 五月","六月","七月","八月","九月","十月","十一月","十二月"],"months-standAlone-narrow":["1 月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"days- format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]};dojo.provide("dojo.i18n.calendar.nls.gregorianExtras");dojo.i18n. calendar.nls.gregorianExtras._built=true;dojo.provide("dojo.i18n.calendar.nls.gregorianExtras.zh_cn");dojo.i18 n.calendar.nls.gregorianExtras.zh_cn= {"dateFormat-yearOnly":"yyyy'年'"};dojo.provide("dojo.i18n.calendar.nls.gregorian");dojo.i18n.calend ar.nls.gregorian._built=true;dojo.provide("dojo.i18n.calendar.nls.gregorian.zh_cn");dojo.i18n.cale ndar.nls.gregorian.zh_cn={"dateFormat-medium":"yyyy-M-d","field-second":"秒钟","field-week":" 周","timeFormat-full":"ahh'时'mm'分'ss'秒' z","field-year":"年","field-minute":"分钟","timeFormat-medium":"ahh:mm:ss","field-hour":"小时","dateFormat-long":"yyyy'年'M'月'd'日 '","field-day":"日","field-dayperiod":"上午/下午","field-month":" 月","dateFormat-short":"yy-M-d","field-era":"时期","timeFormat- short":"ah:mm","timeFormat-long":"ahh'时'mm'分'ss'秒'","dateFormat- full":"yyyy'年'M'月'd'日'EEEE","field-weekday":"周天","field-zone":"区域","days-standAlone-narrow":["日","一","二","三","四","五","六"],"eras":["公元前","公元"],"am":"上午","months-format-abbr":["一月","二月","三月","四月","五月","六月"," 七月","八月","九月","十月","十一月","十二月"],"days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"pm":"下午","months-format-wide":["一月","二月","三月","四月"," 五月","六月","七月","八月","九月","十月","十一月","十二月"],"months-standAlone-narrow":["1 月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"days- format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]};dojo.provide("dojo.widget.nls.TimePicker");dojo.widget.nls.TimePi cker._built=true;dojo.provide("dojo.widget.nls.TimePicker.zh_cn");doj o.widget.nls.TimePicker.zh_cn={"any":"any"};dojo.provide("dojo.widget .nls.DropdownTimePicker");dojo.widget.nls.DropdownTimePicker._built=t rue;dojo.provide("dojo.widget.nls.DropdownTimePicker.zh_cn");dojo.wid get.nls.DropdownTimePicker.zh_cn={"selectTime":"Selecttime"};dojo.pro vide("dojo.widget.nls.DropdownDatePicker");dojo.widget.nls.DropdownDa tePicker._built=true;dojo.provide("dojo.widget.nls.DropdownDatePicker .zh_cn");dojo.widget.nls.DropdownDatePicker.zh_cn={"selectDate":"Sele cta date"};。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提交页面如下:<s:form action="ddd.action" method="post"><s:textfield name="username" label="name:" labelposition="left"></s:textfield><s:submit value="submit"></s:submit></s:form>action的主要代码如下:public String execute() throws Exception {System.out.println(username);return this.SUCCESS;}struts.xml已定义<constant name="struts.i18n.encoding" value="UTF-8"></constant>只有这点代码。
提交页面,tomcat都是utf-8,此时运行,系统输出的是乱码<解决方法下面是一个提交页面(submit.jsp),代码如下:<html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><form name="form1" method="post" action="process.jsp"><div align="center"><input type="text" name="name"><input type="submit" name="Submit" value="Submit"></div></form></body></html>下面是处理页面(process.jsp)代码:<%@ page contentType="text/html; charset=gb2312"%><html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><%=request.getParameter("name")%></body>如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。
原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。
解决办法:通过request.seCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。
修改后的process.jsp代码如下:<%@ page contentType="text/html; charset=gb2312"%><%request.seCharacterEncoding("gb2312");%><html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><%=request.getParameter("name")%></body></html>一般都是页面的编码不一致,如果还不行,你就写个过滤器,或者在WEB.XML中配置过滤器答案不满意向专家提问struts2乱码大侠快来,大侠快来每个jsp头部加上:HTML code<%@ page contentType="text/html; charset=UTF-8"%>再试试这些都有,我没有贴上来就这点代码,不知道为什么不行这是前台提交页面的全代码HTML code<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page contentType="text/html; charset=UTF-8" %><%@ taglib uri="/struts-tags" prefix="s" %><html> <head> <title>Struts2 安装配置示例</title> </head> <body> <br> <s:form action="ddd.action" method="post"> <s:textfield name="username" label="name:" labelposition="left"></s:textfield> <s:submit value="submit"></s:submit> </s:form> </body></html>这是struts.xml的内容XML code<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd"><struts> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <package name="ccc" extends="struts-default"> <action name="ddd" class="com.phoenix.LoginAction"> <result name="success">/LoginSuc.jsp</result> </action> </package></struts>这个process.jsp 是让我用来做测试的么?to zhujiang588:还是不行,提交英文字符能正确显示,提交中文时出现乱码那你写个过滤器吧如web.xml配置<!-- 创建hibernate session 过滤器OpenSessionInViewFilter:用来把一个hibernate session 和一次完整的请求过程对应的线程绑定。
允许在每次request过程中使用同一个Hibernate Session singleSession=false 会创建不同的session实例--><filter><filter-name>hibernateFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class ></filter><filter-mapping><filter-name>hibernateFilter</filter-name><url-pattern>*.do</url-pattern></filter-mapping><filter-mapping><filter-name>hibernateFilter</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping><!-- 设置spring字符编码过滤器--><filter><filter-name>encodingFilter</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><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>*.do</url-pattern></filter-mapping><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping></web-app>package .util;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class SetCharacterEncodingFilter implements Filter {protected String encoding = null;protected FilterConfig filterConfig = null;protected boolean ignore = true;public void destroy() {this.encoding = null;this.filterConfig = null;}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {if (ignore || (request.getCharacterEncoding() == null)) {String encoding = selectEncoding(request);if (encoding != null)request.setCharacterEncoding(encoding);}chain.doFilter(request, response);}public void init(FilterConfig filterConfig) throws ServletException {this.filterConfig = filterConfig;this.encoding = filterConfig.getInitParameter("encoding");String value = filterConfig.getInitParameter("ignore");if (value == null)this.ignore = true;else if (value.equalsIgnoreCase("true"))this.ignore = true;else if (value.equalsIgnoreCase("yes"))this.ignore = true;elsethis.ignore = false;}protected String selectEncoding(ServletRequest request) {return (this.encoding);}}<filter><filter-name>SetCharsetEncodingFilter</filter-name><filter-class>.util.SetCharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>SetCharsetEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>这样我需要加入spring吧另外我没有用hibernate,上面那段就不用加了吧jsp编码也要设置成UTF-8我已经加了Action Class文件编码也设置成UTF-8看看。