`
ldf2008rw
  • 浏览: 16231 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个困扰好久的乱码问题

阅读更多

 最近在在项目中要开发一个发布系统,用来发布新闻等。页面上用了fck编辑器,
在页面上提交发布的内容,先前是默认的get提交,一直没有出现乱码,因为内容比较多,必须采用post提交,
但是一直出现了乱码。我的页面设置的全是utf-8

 而且在BaseAction 里面

               /**
	 * 获得客户端参数值,返回值已经经过了转码。
	 */	
	protected String getParam(String name){
		String tmp = getRequest().getParameter(name);
		if(log.isDebugEnabled()){
			log.debug("request.getParamter: " + name + " = " + tmp);
		}
		if(tmp==null || "".equals(tmp)){
			return null;
		}else{
			try {
				String result = URLDecoder.decode(tmp, GlobalConstant.SYSTEM_ENCODING);
				return result;
			} catch (UnsupportedEncodingException e) {
				log.error("getParam()", e);
				return tmp;
			}
		}
	}

 都做了处理,定义的那个常量也是utf-8. 在网上查了查乱码的几种解决方案,

 决定像先前的那样 弄个过滤器,于是采用了

 spring 内置的过滤器 在web.xml 添加如下代码

<filter>
   <filter-name>springEncodingFilter</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>
   <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>springEncodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

 貌似还是不很凑效,乱码一直存在。继续找乱码的原理,get 和 post 的传递方式的不一样,等等 于是把

更改 D:\Tomcat\conf\server.xml,指定浏览器的编码格式为“简体中文”:

  方法是找到 server.xml 中的

    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='utf-8' />
改了,但是 还没有效果,

 无奈只好自己写了个过滤器,还是不行,,把网上各位大侠的解决方法都用了遍,就感觉纳闷了,一个小小的乱码问题竟然困扰了好几天,在action里面 进行 设置,

getRequest().setCharacterEncoding("utf-8");

还是不行,简直疯掉了,难道真的是人品问题,开始怀疑自己了。

最终 找的了 百度hi 上一牛人的解决方法

struts2.1.6版本中存在一个Bug,即接收到的中文请求参数为乱码(以post方式提交),原因是struts2.1.6在获取并使用了请求参数后才调用 HttpServletRequest的setCharacterEncoding()方法进行编码设置,导致应用使用的就是乱码请求参数。这个bug在struts2.1.8中已经被解决,如果你使用的是struts2.1.6,要解决这个问题,你可以这样做:新建一个Filter,把这个Filter放置在Struts2的Filter之前,然后在doFilter()方法里添加以下代码

public void doFilter(...){
HttpServletRequest req = (HttpServletRequest) request;
req.setCharacterEncoding("UTF-8");//应根据你使用的编码替换UTF-8
filterchain.doFilter(request, response);
}

哎 仔细一看 ,我就是用的这个,我把web.xml

<filter>
   <filter-name>springEncodingFilter</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>
   <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>springEncodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

 

 

<filter>

		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
		</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>

 

 

 放在 struts2 的过滤器前面 (先前的字符过滤器是放在Struts2的Filter之后的),web.xml 是按照顺序加载的,所以就出现了问题。

,一切 ok, 哎 好烦人的这个乱码问题终于解决掉了。。

 

 

 

1
1
分享到:
评论

相关推荐

    解决JSP中文乱码问题

    大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。

    Jsp乱码问题解决

    大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。 一、JSP页面显示乱码 二、表单提交中文时出现乱码 三、数据库连接时...

    asp.net乱码

    页面显示乱码问题在一个网站中,有些页面会正常显示,然而,有些页面会显示成乱码。如果发生这种情况,可以检查一下web.config和文件编码。如果web.config是这样... 经常发现有人被乱码困扰着,而我感觉比较幸运,很...

    解决ubuntu下文件中中文乱码问题

    解决ubuntu下文件中中文乱码问题,解决大家在ubuntu下不能查看中文文档的困扰,让大家很好地使用ubuntu系统完成日常所有所需工作

    Spire.Pdf无水印 解决pdf转化图片中文乱码的问题

    花了很长时间去解决spire水印问题,并且在某些软件生成的pdf在转化为图片时,会出现乱码问题,这个很困扰,于是查找了好多方法,还是觉得spire好用点,终于让我找到破解的了,很好用!

    乱码问题终极解决方案

    乱码问题一直都是困扰中国程序员的一只拦路虎 这些资料教您如何解决它,包括java,jsp,ajax

    struts解决中文乱码问题

    在进行web应用程序开发的过程中,中文问题经常困扰着很多程序员。因此,在接下来的两个课程的学习中,我将根据实践经验来谈一下web应用中的中文问题的解决方法。让大家不再为此而头痛。

    彻底搞懂 python 中文乱码问题(深入分析)

    曾几何时 Python 中文乱码的问题困扰了我很多很多年,每次出现中文乱码都要去网上搜索答案,虽然解决了当时遇到的问题但下次出现乱码的时候又会懵逼,究其原因还是知其然不知其所以然。现在有的小伙伴为了躲避中文...

    Jsp乱码解决方案 word文档

    Jsp传递参数时出现乱码的详细解决方案,适合被乱码困扰的朋友。

    解决ASP.NET中的各种乱码问题总结

    在一个网站中,有些页面会正常显示,然而,有些页面会显示成乱码。 如果发生这种情况,可以检查一下web.config和文件编码。 如果web.config是这样配置的: 而文件的编码不是UTF-8: 那么就会有乱码问题。 注意:...

    cmd.rar,window

    windows控制台乱码问题处理。一键解决乱码,繁体字等问题得困扰!windows控制台乱码问题处理。一键解决乱码,繁体字等问题得困扰!

    xml中文乱码问题

    我在javascript中动态生成了一个xml文件,但是中文一直出现乱码,经过几番验证,问题解决。 这是我的源码 解决方案: 将字符集从utf-8换成gb2312,成功实现, 将html头部和javascript的字符集都换成gb2312,终于解决了...

    关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。 首先: 用show variables like “%colla%”;show varables like “%...

    MySQL乱码问题终极指南

    关于字符集和乱码的基础知识这里就不详细说明了(请自行搜索),但有一个问题需要特别强调一下:乱码是怎么产生的? 这个问题相信很多同学都是模棱两可,或者没有认真想过,反正理解就是”字符编码“不对导致乱码,...

    解决linux下vim中文乱码的方法

    在vim中编辑一个中文文本时,有时候看起来有乱码,以前都是修修补补的弄没有乱码了就不管了,这个问题一直都很困扰我。突然想到这个问题想把它给解决掉,在网上有很多这方面的资料,但是说得不是很到位,经过了一天...

    深入分析Java中的中文编码问题

    编码问题一直困扰着开发人员,尤其在Java中更加明显,因为Java是跨平台语言,不同平台之间编码之间的切换较多...在开发Java web程序时可能会存在编码的几个地方,一个HTTP请求怎么控制编码格式?如何避免出现中文问题?

    AndroidStudio 安装的后续问题

    之前是在公司的设备上安装,后来自己在家里的设备安装被一个问题困扰好久 error: Emulator: ERROR: Unable to access ‘C:\Users\鍚村厛鑱猏.emulator_console_auth_token’: emulator console will not work。 ...

    settings.zip

    idea Android studio 设置资源包,解决绝大部分中文乱码问题 导入即可,utf-8编码,setting.zip 亲测可解决绝大部分中文乱码,特别是本人亲身遇见困扰非常久的莫名其妙的乱码问题

    解决phpmyadmin 乱码,支持gb2312和utf-8

     群里很多PHP爱好者一直受phpmyadmin的乱码问题困扰.我自从有了mysql-front后,我就很少使用phpmyadmin了.但每次连接远程主机,就比较慢.造成操作不便.今天有点时间,就下了最新的版本来研究. 首先说明我的数据库使用...

Global site tag (gtag.js) - Google Analytics