struts2 中文乱码的解决办法分享

2013-10-28  来源:本站原创  分类:Java  人气:7 

这篇文章主要介绍了struts2 中文乱码的解决办法,需要的朋友可以参考下

适合情况 -> 从jsp传入到action时的乱码情况,这里以GBK为例

1.建立一个用于转换编码的filter
文件位置举例:src.util.SetCharacterEncodingFilter.java

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;
import javax.servlet.UnavailableException;
/**
 * Example filter that sets the character encoding to be used in parsing the
 * incoming request
 */
public class SetCharacterEncodingFilter implements Filter {
    /**
     * Take this filter out of service.
     */
    public void destroy() {
    }
    /**
     * Select and set (if specified) the character encoding to be used to
     * interpret request parameters for this request.
     */
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain)throws IOException, ServletException {
    request.setCharacterEncoding("gbk");
    // 传递控制到下一个过滤器
    chain.doFilter(request, response);
    }
    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

2.修改web.xml,在struts的FilterDispatcher映射之前添加2个filter

复制代码 代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
    <filter>
  <filter-name>Set Character Encoding</filter-name>
  <filter-class>util.SetCharacterEncodingFilter</filter-class>
 </filter>
 <filter-mapping>
     <filter-name>Set Character Encoding</filter-name>
     <url-pattern>/*</url-pattern>
 </filter-mapping>

    <filter>
        <filter-name>struts-cleanup</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 <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>
</web-app>

3.你的JSP头应该有
<%@ page language="java" pageEncoding="GBK"%>

4.在struts.xml中修改默认的编码设定

复制代码 代码如下:

<struts>
 <constant name="struts.i18n.encoding" value="gbk"></constant>
...
...
...
</struts>

基本上就这样可以解决大多传入的字符乱码问题

PS:如果是数据库提取字符乱码,比如mysql,确认你的数据库内字符是gbk,并且连接字符串指定了字符编码
<property name="url" value="jdbc:mysql://localhost/database?useUnicode=true&characterEncoding=gbk"></property>

相关文章
  • struts2 中文乱码的解决办法分享 2013-10-28

    这篇文章主要介绍了struts2 中文乱码的解决办法,需要的朋友可以参考下 适合情况 -> 从jsp传入到action时的乱码情况,这里以GBK为例 1.建立一个用于转换编码的filter 文件位置举例:src.util.SetCharacterEncodingFilter.java package util; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; im

  • utf-8编码引起js输出中文乱码的解决办法 2014-05-05

    utf-8编码引起document.writeln输出中文乱码的解决办法 编码规则是utf-8,如网页头中的: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 那么js文件中如果有中文输出就会出现乱码,解决此个问题有两个方法: 1.在引用javascript输出的地方加上charset="gb2312" 或 charset="big5

  • struts2文件上传和下载以及中文乱码的解决办法 2014-03-18

    文件的上传在此不多做解说,大家可以参考我写的这篇html5无插件的方式实现:http://my.codeweblog.com/gongxufan/blog/189824.不过该方法只适用于IE10+和ff chrome等高版本的浏览器.在这里主要讨论文件下载,下面开始进入主题. 首先我们看看StreamResult这个类的源码: public class StreamResult extends StrutsResultSupport { private static final long se

  • .NET中文乱码的解决方法分享 2015-02-13

    这篇文章主要介绍了.NET中文乱码的解决方法,有需要的朋友可以参考一下 前言:最近升级一个由VS05开发的项目,当迁移至VS10后,试运行,啊~!我文盲了,怎么一个汉字都不认识了!(乱码纷纷的说) 说明:本文以将项目改为UTF8编码为例. 解决之道 1.修改配置文件 <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" responseHeaderEncoding="UTF-8

  • java页面中文乱码的解决办法 2015-01-14

    做java开发的朋友碰到最多的就是中文乱码这个问题了,下面介绍页面提交时与url中文乱码的一些解决办法 在页面提交到tomcat乱码 解决方法是在tomcat/conf/server.xml中进行配置 以tomcat6.0.32为例,需将以下代码: Xml代码 <Connectorport="8080"protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443&

  • php插入中文到sqlserver 2008里出现乱码的解决办法分享 2013-10-03

    今天使用php操作数据库时发现插入SQL Server 2008数据库里的中文字段出现乱码,通过下面的方法解决了,需要的朋友可以参考下 今天使用php操作数据库时发现插入SQL Server 2008数据库里的中文字段出现乱码,下面是我一开始时的一些情况: 开发环境是php5.3.3+Apache2.2.17+SQL Server 2008,php脚本文件的编码是utf-8,传给数据库的编码是GB2312(SQL Server的默认字符编码可能是这个,我不肯定),我用的是微软官方提供的SQLSR

  • php操作csv文件导入mysql时中文乱码的解决办法 2014-08-26

    用网上通用的方法读取并上传csv文件内容进入mysql数据库中时,中文显示乱码,即使对数据用iconv函数转码后仍然乱码,这时可以用setlocale()函数: 这个函数经查阅是配置地域信息用的,在读取和写入csv数据前先用此函数进行定义,比如我的csv文件是无BOM的UTF-8格式,就先用如下函数进行定义: setlocale(LC_ALL, 'zh_CN.UTF8′); 然后再用iconv函数对数据内容进行转码入库等后续操作.

  • 在mint中用wine安装QQ时中文乱码的解决办法 2010-09-06

    1.搜索并下载字体文件simsun.ttc: 2.放到/usr/share/wine/fonts里: 3.再安装试试--OK!

  • 通过url方式传递中文乱码的解决方法 2014-01-17

    本篇文章主要是对通过url方式传递中文乱码的解决方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 例如: 通过url传递中文参数:xxx.do?name=名字&age=十八岁 解决办法: 1.在html页面,通过js的encodeURI方法对字符2次编码 encodeURI(encodeURI(jsonStr)); 2.在后台进行解码 java.net.URLDecoder.decode(jsonStr, "UTF-8");

  • oracle中文乱码的解决方法 2014-05-21

    这篇文章主要介绍了oracle中文乱码的解决方法,服务器系统是linux,支持中文显示,数据库字符集是zhs16gbk,往数据库里建表,插入中文数据,sqlplus 连接到数据库,中文显示乱码,需要的朋友可以参考下 解决办法: 修改oracle用户的环境变量 文件.加入NLS_LANG="SIMPLIFIED CHINESE_CHINA.al32utf8"; export NLS_LANG [[email protected] ~]$ vi .bash_profile # .bash_pro

  • php生成二维码时出现中文乱码的解决方法 2014-05-27

    这篇文章主要介绍了php生成二维码时出现中文乱码的解决方法,较为详细的分析了php生成二维码的方法,以及出现乱码时的解决方法,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php生成二维码时出现中文乱码的解决方法.分享给大家供大家参考.具体分析如下: 最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个类型没有内容,随即判断没内容就加上一个固定的字

  • java URL乱码的解决办法 2014-02-07

    这篇文章介绍了java URL乱码的解决办法,有需要的朋友可以参考一下 平常我们都是encode 一次,然后直接接受参数 String para = request.getParameter(paramName); 这是因为容器自动能帮我们解码 (DECODE) 一般来说, encode 的时候,使用的 UTF-8(系统的 编码) 那么解码的时候也是使用 UTF-8的话, 那么不会出现传说中的乱码~ 但是如果 在JSP 页面 使用的UTF-8,但是 容器 解码的时候 使用的 别的编码的话,则有可

  • jsp超链接中文乱码的解决方法 2014-02-26

    jsp超链接中文乱码的解决方法,需要的朋友可以参考一下 直接修改tomcat下的conf/server.xml 找到该段代码,直接添加红色部分代码就可以 <Connector port="8080" URIEncoding="UTF-8" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

  • ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享 2014-05-23

    这篇文章主要介绍了ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享,有需要的朋友可以参考一下 在Global中 Application_Start 添加 如: void Application_Start(object sender, EventArgs e) { //在应用程序启动时运行的代码 System.Reflection.PropertyInfo p = typeof(System.Web.HttpRuntime).GetProperty("FileChange

  • 探讨PHP JSON中文乱码的解决方法详解 2014-06-14

    本篇文章是对PHP中JSON中文乱码的解决方法进行了详细的分析介绍,需要的朋友参考下 我们知道在使用Ajax技术与PHP后台交互时,中文乱码是常有的事,JSON作为与XML类似的数据交换格式,在PHP用来进行交互时也会出现中 文乱码的情况,解决PHP JSON中文乱码的方法思路其实与PHP Ajax传值中文字符乱码的解决方法类似,下面我以教程形式详细介绍下解决PHP JSON中文乱码的方法. 为什么PHP与JSON交互时会出现中文乱码? 由于JSON与JS一样,对于客户端的字符是以UTF8的形式

  • asp.net导出Excel显示中文乱码的解决方法 2014-09-19

    asp.net导出Excel显示中文乱码的解决方法,需要的朋友可以参考一下 protected void btnExcel_Click(object sender, EventArgs e) { List<bUFlow.Model.orderhistory> orderlist = dal.GetOrderList2(""); string filename = "3g流量网龄升级计划用户表"; string name1 = filename; stri

  • 无法将函数定义与现有的声明匹配 问题的解决办法 分享 2014-11-15

    无法将函数定义与现有的声明匹配 问题的解决办法 分享,需要的朋友可以参考一下 今晚在整MFC,遇到了以下的问题. d:\我的文档\visual studio 2008\projects\virtualosc\arraylisttype.h(171) : error C2244: "arrayListType<elemType>::maxListSize": 无法将函数定义与现有的声明匹配 1> d:\我的文档\visual studio 2008\projects\v

  • PHP base64编码后解码乱码的解决办法 2014-11-15

    这篇文章主要介绍了PHP base64编码后解码乱码的解决办法,导致乱码的原因就是base64编码后包含一些特殊字符,替换一下就可以了,需要的朋友可以参考下 在用PHP做东西的时候发现了一个问题,可以简单的归结为乱码的问题,但是这个问题不是函数本身造成的.来看看罪魁祸首是谁. 嫌疑人:base64_encode 和 base64_decode 罪行:我写了一个跳转和提示函数,接收提示信息后跳转到指定的页面,但是跳转提示时汉字乱码. 跳转模版代码如下: <!DOCTYPE html><ht

  • Java在Linux下 不能处理图形的解决办法 分享 2014-12-03

    Java在Linux下 不能处理图形的解决办法 分享,需要的朋友可以参考一下 java在图形处理时调用了本地的图形处理库.在利用Java作图形处理(比如:图片缩放,图片签名,生成报表)时,如果运行在windows上不会出问题.如果将程序移植到Linux/Unix上的时候有可能出现图形不能显示的错误. 提示信息:"Can't connect to X11 window server"这是由于Linux的图形处理需要一个X Server服务器. 解决办法: 1.如果服务器上安装有图形界面,

  • JQuery异步获取返回值中文乱码的解决方法 2015-01-10

    这篇文章主要介绍了JQuery异步获取返回值中文乱码的解决方法,除了正常的编码设置需要统一外,还要设置一个setCharacterEncoding才可以避免乱码,需要的朋友可以参考下 用jqgrid异步获取列表值,遇到个问题,服务器端从数据库取到的数据没有出现中文乱码问题(日志打出来是没有乱码的),但是异步传到客户的时候却出现了乱码. 服务器端已经编码过了(UTF-8编码).开始一直怀疑是客户端的问题,比如客户端和服务器端编码不一致啊,也怀疑是不是jqGrid工具函数中少配了 contentTy