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文档编码,在浏览器中会出现中文乱码。
学习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标签中的结果对应。
中文乱码的解决方法

中文乱码的解决方法在进行中文文本处理过程中,可能会遇到乱码的情况,这主要是由于使用了不兼容的编码格式或者在数据传输过程中出现了错误。
下面是一些解决中文乱码问题的方法:1.使用正确的编码方式2.修改文件编码如果已经打开了一个包含乱码的文本文件,可以通过修改文件编码方式来解决问题。
例如,在记事本软件中,可以尝试选择“另存为”功能,并将编码方式改为UTF-8,然后重新保存文件,这样就可以解决乱码问题。
3.检查网页编码当浏览网页时遇到乱码问题,可以在浏览器的“查看”或“选项”菜单中找到“编码”选项,并将其设置为正确的编码方式(例如UTF-8),刷新网页后,乱码问题通常会得到解决。
5.使用转码工具如果已经得知文件的原始编码方式但无法通过其他方式解决乱码问题,可以尝试使用一些转码工具来将文件以正确的编码方式转换。
例如,iconv是一款常用的转码工具,可以在命令行界面下使用。
6.检查数据传输过程在进行数据传输时,特别是在网络传输中,可能会出现数据传输错误导致中文乱码。
可以检查数据传输过程中的设置和参数,确保传输过程中不会造成乱码问题。
7.检查数据库和应用程序设置在进行数据库操作和应用程序开发时,也可能会出现中文乱码问题。
可以检查数据库和应用程序的设置,确保正确地处理和显示中文字符。
8.清除特殊字符和格式有时候,中文乱码问题可能是由于文本中存在特殊字符或格式导致的。
可以尝试清除文本中的特殊字符和格式,然后重新保存或传输文件,看是否能够解决乱码问题。
总结起来,解决中文乱码问题的关键是了解文件的编码方式,并确保在处理过程中使用相同的编码方式。
此外,要注意数据传输过程中的设置和参数,以及数据库和应用程序的设置,确保正确地处理和显示中文字符。
最后,如果以上方法仍然无法解决乱码问题,可以尝试使用专业的转码工具来转换文件的编码方式。
如何解决乱码问题总结

</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"};。
struts2传值出现乱码问题

1、在struts.xml文件中添加:<constant name="struts.i18n.encoding" value="gb2312" />页面编码格式如果是gb2312那么value值就写gb2312,页面编码如果是GBK那么value值就写GBK;总之页面什么编码格式这里的value就写什么格式。
这样简单语句话就解决了乱码问题如下:<struts><constant name="struts.i18n.encoding" value="gb2312" /><package name="com" extends="convention-default">............</struts>2、url传值到Action的乱码解决方法jsp页面 URL传中文参数到Action里面出现乱码,用过滤器和控制器都解决不了,用了我两个多小时解决这个小问题!解决方法有以下几种:第一种:在Action中用 new String(str.getBytes("ISO8859_1"), "UTF8"),进行转码,因为传递的时候,中文默人的是ISO8859_1第二种:可通过配置TOMCAT来解决此问题,具体解决方法如下:在tomcat的server.xml里,找到<Connector port="8080"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443"acceptCount="100"debug="0" connectionTimeout="20000"disableUploadTimeout="true"useBodyEncodingForURI="true" URIEncoding="gbk">其中是修改 disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="gbk" 其方法是防止在url中出现乱码然后在每个Jsp页面添加如下代码<%@ page pageEncoding=”gb2312″%><%@ page contentType=”text/html;charset=gb2312″%><%request.setCharacterEncoding(”gb2312″);%>第三种:直接在ACTION中利用以下方法解决:request.setCharacterEncoding("gb2312");response.setCharacterEncoding("gb2312");我用的是struct1.2+Hibernate3.0+Spring2.0在做那个两个action的页面的时候,jsp页面的下拉列表通过actionForm传值给action,老是得到乱码,过滤器+server.xml+页面编码统一后,仍不能解决。
中文乱码解决方案

中文乱码解决方案中文乱码问题是指在使用计算机软件或操作系统时,中文字符显示为乱码或其他非预期字符的情况。
中文乱码问题通常出现在以下几种情况下:1.编码不一致:中文乱码问题最常见的原因是编码不一致。
计算机中使用的编码方式有很多种,如UTF-8、GB2312、GBK等。
如果文件的编码方式与软件或操作系统的默认编码方式不一致,就会导致中文乱码。
解决该问题的方法是将文件的编码方式转换为与软件或操作系统一致的方式。
2.字体显示问题:中文乱码问题还可能与字体显示有关。
如果计算机中没有安装支持中文的字体,或字体文件损坏,就会导致中文字符显示为乱码或方框。
解决该问题的方法是通过安装正确的字体文件或修复字体文件来解决。
3.网页编码问题:在浏览网页时,如果网页的编码方式与浏览器的默认编码方式不一致,也会导致中文乱码。
解决该问题的方法是在浏览器中手动设置网页编码方式,或在网页头部指定正确的编码方式。
4.数据传输问题:中文乱码问题还可能与数据传输有关。
在进行数据传输时,如果数据的编码方式与传输协议或接收端的要求不一致,就会导致中文乱码。
解决该问题的方法是在数据传输的过程中进行编码转换,或在接收端进行适当的解码操作。
下面是一些常用的解决中文乱码问题的方法:3.设置浏览器编码方式:在浏览器的设置中,可以手动指定网页的编码方式。
可以尝试不同的编码方式,找到正确的方式显示中文字符。
4.检查数据传输设置:如果中文乱码问题是在数据传输过程中出现的,可以检查传输的设置是否一致。
比如,在进行数据库连接时,可以设置数据库的编码方式与应用程序的编码方式一致。
5.使用专业工具:如果以上方法无法解决中文乱码问题,可以考虑使用专业的中文乱码解决工具。
这些工具可以自动检测和修复中文乱码问题,提高处理效率。
总结起来,解决中文乱码问题需要确定问题的原因,然后采取相应的方法进行修复。
在处理中文乱码问题时,尽量使用标准的编码方式和字体文件,避免使用非标准或自定义的编码方式。
Struts2详细实例教程

Struts2(上)一、经典的MVC模式二、Struts1.x对MVC的实现三、Struts1.x的主要组件和作用组件作用ActionServlet 中央控制器Action 分控制器,调用JavaBean实现业务逻辑,Action可以分为Action、DispatchAction等不同类型ActionForm 封装参数,实现服务器验证,文件上传等Forward 转发到目的地,可以是JSP,也可以是另一个ActionStruts-config.xml 配置文件,配置有ActionForm,Action,Forward等,通过XML解析,然后使用反射技术使用该文件Struts标签库和JSTL类似,和Struts-config.xml、ActionForm、Action等对象可以紧密集成四、Struts1.x 开发实例-登录程序见案例。
五、Struts2(WebWork)的MVCStruts2的MVC架构六、Struts2的主要组件组件作用FilterDispatcher 起中央控制器作用的过滤器Action 处于Model层的Action,调用JavaBean实现业务逻辑struts.xml 核心配置文件,配置有Action、Result等result 和forward类似,转发的目的地,支持多种视图技术。
七、Struts2的实例-登录在MyEclipse环境中建立一个新的web工程,名称“Struts2Login”,存放路径“f:\Struts2Login”。
在Struts2.0.11版本中找到war包struts2-blank-2.0.11.war,解开该war包,在WEB-INF/lib 目录下复制出所有的jar包,这些jar包就是一个Struts2程序所需要的基础jar包,把它们复制到新建的web工程的WEB-INF/lib目录中。
在src目录下建立一个类,包名mypack,类名UserAction,其代码如下:package mypack;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String username;private String userpass;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getUserpass() {return userpass;}public void setUserpass(String userpass) {erpass = userpass;}@Overridepublic String execute() throws Exception {if ("Mike".equals(username) && "123".equals(userpass)|| "张三".equals(username) && "abc".equals(userpass))return "success";elsereturn "error";}}在src目录下建立Struts2的配置文件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><!-- 定义包管理配置的action 继承struts-default.xml中的配置 --><package name="actions" extends="struts-default"><!-- 定义Action(login.action) --><action name="login" class="erAction"><!-- 定义转发路径对应的字符串名 --><result name="success">/Success.jsp</result><result name="error">/Error.jsp</result></action></package></struts>修改web.xml,在其中加入一个过滤器,过滤/*路径。
中文乱码解决方案

IE6的“以UTF-8发送URL”选项设置对请求页面字符编码有影响吗?关键字: 字符编码最近又碰到了中文乱码问题,这里我没有把数据库牵扯进来,先说下我的环境,servlet容器使用Tomcat6.0,浏览器FireFox3.0、IE6,涉及字符编码设置的地方我的思路就是编码的地方都统一使用UTF-8,具体配置如下:1.所有页面的charset设置为UTF-8。
2.Tomcat的URIEncoding默认是ISO-8859-1,而我设置为UTF-8,主要是想解决中文命名的文件以及请求以get方式提交有可能出现的乱码问题。
3.添加过滤器,调用request.setCharacterEncoding("utf-8")方法将request 的字符集设定为utf-8,解决请求以post方式提交的乱码问题。
其实这样的设置貌似是不会再出现乱码问题了,不过,问题依旧来了,如果我在浏览器的地址栏中输入中文参数提交,返回的页面却出现了乱码。
真搞不明白到底是哪里出了问题!说起来对中文乱码的问题一直是一支半解,出现乱码了,网上搜罗了一大堆资料,按照网上的配置,问题到是解决了,不过原理却搞的很模糊,一个请求发送到服务器,服务器业务逻辑处理后返回一个页面,这中间涉及的字符集转换,编码,解码过程一概不清楚。
这次,折腾了半天,总算是更进一步了解了字符编码问题,这里做个总结。
先看我的总结,有不对的地方欢迎批评。
首先我们看下,一个请求响应的流程浏览器 IE/FireFox -------->Servlet容器----------------->显示页面编码使用容器的URIEncoding转码解码我把用户发送请求方式不同引起的中文问题划分了四种类型:1、表单的get提交2、表单的post提交3、页面链接传递中文参数4、地址栏中参数直接输入中文提交1.首先我们看表单get方式提交浏览器根据页面的charset编码方式对页面进行编码,然后提交至服务器,首先进入对应的字符编码过滤器(如果有的话),不过Tomcat6.0对于get 提交方式采用的是server.xml文件中的URIEncoding编码方式,而并不会采用过滤器中设置的编码,那么根据我的环境设置,jsp页面都使用UTF-8的编码,Servlet容器的URIEncoding也设置为UTF-8,则servlet不用进行转码即可正确解码,获得正常的中文字符串。
Velocity 和 Struts2

3.与WEB容器无关,除了HTML,也可以生成各种文本,如XML、RTF、Java源代码等。
FreeMarker缺点:
1.freemarker的map限定key必须是string,不支持其他数据类型。(对我的应用好象影响不大)
在Struts2中查找vm文件的顺序先查找Web应用程序,再查找类路径。如果你需要使用vm作为显示层,只需要在配置文件中指定result的type属性为velocity,然后将<param>的location属性指定到一个以vm结尾的资源上就可以了!
1.Struts2中的Velocity中文乱码的处理方式:
2.freemarker的变量必须有值,没有被赋值的变量就会抛出异常。程序里面几乎所有可能出现空值的变量统统需要加上${xxx?if_exists},有些循环条件还需要写if判断。
3.不能在群集上面发布应用。freemarker支持在页面里面直接操作Session,request等,例如${Session[...]},但不能对其序列化。(这个对我也不是问题,作为企业里的小应用,我就不用群集)
因为在Velocity-1.4.jar中的org.apache.velocity.runtime.defaults中定义的velocity.properties中定义的input.encoding=ISO8859-1,output.encoding=ISO8859-1,通常最好在VM文件中使用%{getText(‘’)}调用国际化资源文件的内容就不会产生乱码。
struts2 与 velocity 的整合最难的地方也就是这个地方了,完成了上面的两件事情,我们就可以像使用jsp一样,在struts中使用velocity 了,而且能够得到velocity的所有好处. 写VelocityLayoutResult这个类的人确实是强人.
java中文乱码解决方法

java中文乱码解决方法1、解决文件中文乱码:1.1、修改文件字符编码:由于不同系统,比如Unix下用GBK格式编辑的文件,在Windows中就会乱码,此时可以使用Notepad++(记事本插件),将文件编码转换为系统默认的utf-8,8为Unicode编码。
1.2、修改系统语言及字符编码:此外,也可以通过改变操作系统的语言及字符编码,这种方法我们可以在控制面板-区域和语言的地方进行修改,再次点击其中的管理,在点击详细设置,这时候就可以看到字符集,将其设置为utf-8。
2、解决程序中文乱码:2.1、使用unicod-8格式编码:在这种情况下,一定要注意程序代码的编码格式,一定要以utf-8格式进行编码,而不是GBK,否则一样会出现乱码。
2.2、设置字符集:有时候,可以在程序中设置语言字符集,例如:response.setContentType("text/html;charset=utf-8");用于普通的JSP页面编码设置,也可以在web.xml中设置characterEncoding3、修改Tomcat的默认编码:可以修改tomcat的server.xml文件,将其默认编码为utf-8,在相应的位置加上URIEncoding="utf-8"。
4、前端乱码解决方法:也可以到浏览器中去修改编码,比如:Firefox浏览器中,可以按Ctrl + U,Chrome可以按Ctrl + U,IE下可以第一个菜单栏中点击View,然后选择Encoding,转换为相应的编码即可。
5、对数据库使用正确的编码:在不同的数据库中当我们有gbk的字符编码的时候,一定要创建数据库时候指定好字符编码,让数据库与整个程序保持一致,如果仅仅程序有编码时,数据库没有则容易出现乱码。
总之,我们在解决Java中文乱码的问题是要以系统- web页面-程序-数据库为关键点进行检查,以确保编码的一致性。
各种中文乱码解决办法

各种中⽂乱码解决办法在编程的时候会遇到各种中⽂乱码,这⾥进⾏统计以便以后查阅1、前端页⾯元素中⽂乱码<meta http-equiv="Content-Type" content="text/html; charset=GBK" />会出现下⾯乱码页⾯上的元素也就是html内的元素,是中⽂的会出现乱码,⽽从后台获取的中⽂不会出现乱码。
解决⽅法:页⾯上设置编码⽅式为UTF-8<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />2、URL传参、get⽅式传参出现中⽂乱码,如下出现这种情况,要先确定参数在前台页⾯上不是乱码的,可以alert()⼀下,看参数是否乱码解决办法1:对于以get⽅式传输的数据,request默认使⽤ISO8859-1这个字符编码来接收数据,客户端以UTF-8的编码传输数据到服务器端,⽽服务器端的request对象使⽤的是ISO8859-1这个字符编码来接收数据,服务器和客户端沟通的编码不⼀致因此才会产⽣中⽂乱码的。
解决办法:在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String id= request.getParameter("id");id=new String(name.getBytes("ISO8859-1"), "UTF-8") ;}解决⽅法2:修改tomcat服务器的编码⽅式,可以在server.xml⾥⾯设置<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>设置成红字部分,但是有时也是不可⽤的,因为即使这⾥设置的是UTF-8但是其他地⽅设置成其他编码⽅式会覆盖掉这个设置,仔细检查各个地⽅的编码。
解决中文乱码的问题

protected boolean ignore = true; //在web.xml文件里定义filter时要用到此参数
public void destroy() {
// TODO Auto-generated method stub
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%
out.print("JSP的中文处理");
%>
this.ignore = true;
else
this.ignore = false;
}
protected String selectEncoding(ServletRequest request) {
String encoding = selectEncoding(request);
if (encoding != null)
中文乱码的总结

中文乱码的总结中文乱码是指在使用中文字符时,出现了乱码的情况。
这种情况在计算机领域中比较常见,尤其是在网络传输和文件编码中。
中文乱码的出现会给我们的工作和生活带来很多不便,因此我们需要了解中文乱码的原因和解决方法。
一、中文乱码的原因1.编码不一致:在不同的编码方式下,同一份文件的内容可能会出现不同的编码,导致中文乱码的出现。
2.字符集不匹配:在不同的字符集下,同一份文件的内容可能会出现不同的字符,导致中文乱码的出现。
3.文件格式不正确:在文件格式不正确的情况下,文件的内容可能会出现乱码。
4.软件不兼容:在使用不同的软件打开同一份文件时,可能会出现中文乱码的情况。
二、中文乱码的解决方法1.修改编码方式:在使用不同的编码方式时,可以通过修改编码方式来解决中文乱码的问题。
2.修改字符集:在使用不同的字符集时,可以通过修改字符集来解决中文乱码的问题。
3.修改文件格式:在文件格式不正确的情况下,可以通过修改文件格式来解决中文乱码的问题。
4.使用兼容性好的软件:在使用不同的软件打开同一份文件时,可以使用兼容性好的软件来解决中文乱码的问题。
5.使用专业工具:在处理中文乱码的问题时,可以使用专业的工具来解决,如文本编辑器、编码转换工具等。
三、中文乱码的预防措施1.选择合适的编码方式和字符集:在编写文件时,应该选择合适的编码方式和字符集,以避免中文乱码的出现。
2.使用标准的文件格式:在保存文件时,应该使用标准的文件格式,以避免中文乱码的出现。
3.使用兼容性好的软件:在打开文件时,应该使用兼容性好的软件,以避免中文乱码的出现。
4.注意文件传输过程中的编码问题:在文件传输过程中,应该注意编码问题,以避免中文乱码的出现。
中文乱码是一个比较常见的问题,但是只要我们了解中文乱码的原因和解决方法,就可以有效地避免和解决中文乱码的问题。
在日常工作和生活中,我们应该注意中文乱码的预防措施,以保证文件的正常使用。
不同浏览器上中文文件名的下载乱码问题

不同浏览器上中文文件名的下载乱码问题2011-09-09 16:43浏览器能正确识别的编码格式,只要按照这样的编码来设置对应的Content-Disposition,那么应该就不会出现中文文件名的乱码问题了。
首先,Content-Disposition值可以有以下几种编码格式1. 直接urlencode:Content-Disposition: attachment; filename="struts2.0%E4%B8%AD%E6%96%87%E6%95%99%E7%A8%8B.chm"2. Base64编码:Content-Disposition: attachment; filename="=?UTF8?B?c3RydXRzMi4w5Lit5paH5pWZ56iLLmNobQ==?="3. RFC2231规定的标准:Content-Disposition: attachment; filename*=UTF-8''%E5%9B%9E%E6%89%A7.msg4. 直接ISO编码的文件名:Content-Disposition: attachment;filename="测试.txt"然后,各浏览器支持的对应编码格式为:1. IE浏览器,采用URLEncoder编码2. Opera浏览器,采用filename*方式3. Safari浏览器,采用ISO编码的中文输出4. Chrome浏览器,采用Base64编码或ISO编码的中文输出5. FireFox浏览器,采用Base64或filename*或ISO编码的中文输出new_filename = URLEncoder.encode(filename, "UTF8");// 如果没有UA,则默认使用IE的方式进行编码,因为毕竟IE还是占多数的rtn = "filename=\"" + new_filename + "\"";if (userAgent != null){userAgent = userAgent.toLowerCase();// IE浏览器,只能采用URLEncoder编码if (userAgent.indexOf("msie") != -1){rtn = "filename=\"" + new_filename + "\"";}// Opera浏览器只能采用filename*else if (userAgent.indexOf("opera") != -1){rtn = "filename*=UTF-8''" + new_filename;}// Safari浏览器,只能采用ISO编码的中文输出else if (userAgent.indexOf("safari") != -1 ){rtn = "filename=\"" + new String(filename.getBytes("UTF-8"),"ISO8859-1") + "\"";}// Chrome浏览器,只能采用MimeUtility编码或ISO编码的中文输出else if (userAgent.indexOf("applewebkit") != -1 ){new_filename = MimeUtility.encodeText(filename, "UTF8", "B");rtn = "filename=\"" + new_filename + "\"";}// FireFox浏览器,可以使用MimeUtility或filename*或ISO编码的中文输出else if (userAgent.indexOf("mozilla") != -1){rtn = "filename*=UTF-8''" + new_filename;}}目前,我测试的情况,在几个浏览器上都能正常输入中文文件名但,也许浏览器不同版本,可能还会有乱码的情况...../laxinicer/blog/item/f755d82e538a70474ec22634.html。
struts2.2.1文件下载及中文乱码问题解决

Struts2下载文件实现的说明contentType内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片inputName下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法contentDisposition文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。
取值为:attachment;filename="struts2.txt",表示文件下载的时候保存的名字应为struts2.txt。
如果直接写filename="struts2.txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline;filename="struts2.txt"bufferSize下载缓冲区的大小contentType属性和contentDisposition分别对应着HTTP响应中的头Content-Type和Content-disposition头。
如下例:down.jsp<a href="<s:url value='test/fileDown.do?fileName=struts2配置参数详解.txt'> </s:url>">下载</a>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="com" namespace="/test" extends="struts-default"><action name="fileDown" class=".down.FileDown"><result type="stream"><!-- 下载文件类型定义--><param name="contentType">application/octet-stream</param><!-- 下载文件输出流定义--><param name="inputName">inputStream</param><!-- 下载文件处理方法--><param name="contentDisposition">attachment;filename="${fileName}"</param><!-- 下载文件的缓冲大小--><param name="bufferSize">4096</param></result></action></package></struts>文件下载Action:public class FileDown extends ActionSupport {private String fileName;public String getFileName() {return fileName;}public void setFileName(String fileName) {this.fileName = fileName;}public InputStream getInputStream() throws UnsupportedEncodingException {return ServletActionContext.getServletContext().getResourceAsStream( "/WEB-INF/" + fileName);}public String execute(){System.out.println(fileName+"----------");return "success";}}这个例子运行可,可能会出现:下载页面的文件名为:fileDown.do或htm等情况。
Tomcat中文乱码解决方法

Tomcat 中文乱码解决方法一、通过contentType、pageEncoding或response.setCharacterEncoding设置网页编码(如utf-8、gb2312、gbk或其它编码)。
比如(以gbk为例):<%@ page contentType="text/html;charset=gbk" %>或: <%@ page pageEncoding="gbk" %>或: <% response.setCharacterEncoding ("gbk"); %>二、然后根据以下情况进行具体设置(以下各情况的设置互不关联):◆POST数据的接收只需在接收数据的jsp文件中设置request的字符编码格式为当前POST数据的网页编码,例如:<% request.setCharacterEncoding("gbk"); %>◆GET数据和URL数据(如超链接)的接收只需在Tomcat配置文件server.xml的Connector标签中设置useBodyEncodingForURI为true,或者设置URIEncoding为提交数据的网页编码。
例如:<Connector port="8080" maxHttpHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true"useBodyEncodingForURI="true" 或URIEncoding="gbk" />如果采用useBodyEncodingForURI="true",则需要在接收数据的jsp文件中设置request的字符编码格式为当前网页编码,例如(设当前网页编码为gbk):<% request.setCharacterEncoding("gbk"); %>※URIEncoding参数会影响到所有应用,故推荐设置useBodyEncodingForURI为true的方式接收数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<param-name>encoding</param-name>
<param-value>gbk</param-value> <!-- //指定字符集 -->
</init-param>
struts2中文乱码
在spring.jar包的org.springframework.web.filter包下有个CharacterEncodingFilter.java
把spring.jar放进工程的lib里,然后在web.xml文件中<servlet>元素前加以下代码
注意要把CharacterEncodingFilter放在其他过滤器之前声明。
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
<!-- 著名 Character Encoding filter -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 符集时,是否用本过滤器的字符集替换 -->
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</filter-mapping>
<!-- 其他某过滤器 -->
<filter>
<filter-name>eXtremeExport</filter-name>
<filter-class>
org.extremecomponents.table.filter.ExportFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>eXtremeExport</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>