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>

(0)

相关推荐

  • struts2中一个表单中提交多个请求的例子(多个提交按钮)

    使用这种方式也需要通过请求参来来指定要执行的动作.请求参数名的格式为 action!method.action 注:由于Struts2只需要参数名,因此,参数值是什么都可以. 下面我就给出一个实例程序来演示如何处理有多个submit的form: 主页面more_submit.jsp 复制代码 代码如下: <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

  • struts2+jquery实现ajax登陆实例详解

    文本仪一个实例讲述了struts2+jquery实现ajax登陆的实现方法,具体步骤如下: 一.新建一个web项目,取名test.配置好struts2的环境,并导入Jquery的js文件到该项目. 二.在com.action包下,新建一个loginAction.java loginAction.java的代码如下 package com.action; import org.apache.struts2.convention.annotation.Action; import org.apach

  • java中struts2实现文件上传下载功能实例解析

    本文实例讲述了java中struts2实现文件上传下载功能实现方法.分享给大家供大家参考.具体分析如下: 1.文件上传 首先是jsp页面的代码 在jsp页面中定义一个上传标签 复制代码 代码如下: <tr>      <td align="right" bgcolor="#F5F8F9"><b>附件:</b></td>      <td bgcolor="#FFFFFF">

  • Struts2实现生成动态验证码并验证实例代码

     一.基本流程: 产生一个验证码页面(很小)→嵌入到表单中→点击可以刷新页面→表单提交时验证. 二.方法: 1.定义TestAction,实现画图方法 package com.zhuguang.action; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Map; import javax.se

  • struts2集成javamail发邮件示例详解

    一.代码预览这两天在做struts2上的邮件发送.以前的项目有用到spring,用spring提供的邮件支持类很方便可以完成这个功能,但是现在只用struts2的话,就碰到了一系列的问题. 请先将自己下载的 mail.jar,及activation.jar加入到classpath 复制代码 代码如下: package com.nerve.cloudoffice.common.util; import java.util.List;import java.util.Properties; impo

  • struts2单个文件上传的两种实现方式

    通过2种方式模拟单个文件上传,效果如下所示 开发步骤如下: 1.新建一个web工程,导入struts2上传文件所需jar,如下图 目录结构 2.新建Action 第一种方式 复制代码 代码如下: package com.ljq.action; import java.io.File; import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext; import com.opensymph

  • 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

  • PHP读取mssql json数据中文乱码的解决办法

    PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. 解决办法如下: 这样,sql server 2008中的中文就可以在网页正常显示了. 如果要将中文正常插入到sql server 2008中,还要加入一条代码:$query = iconv("utf-8", "gbk//ignore", $query);//为了解决中文

  • Linux 中unzip解压时中文乱码的解决办法

    Linux 中unzip解压时中文乱码的解决办法 当我们在linux中解压一个含有中文名字的压缩包如"资料.zip"时,如果直接使用如下的命令,将会出现中文乱码. unzip 资料.zip 主要的原因是因为unzip在解压的时候会将编码转化为其内部默认的编码,而默认的编码根本不支持中文CP936编码.因此我们需要在解压的时候明确的指定需要使用的编码. 目前可以采用如下两种方式解决 方法一 在解压的时候直接指定编码格式 #指定GBK GB18030编码也是可以的 unzip -O CP9

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

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

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

    今天使用php操作数据库时发现插入SQL Server 2008数据库里的中文字段出现乱码,下面是我一开始时的一些情况: 开发环境是php5.3.3+Apache2.2.17+SQL Server 2008,php脚本文件的编码是utf-8,传给数据库的编码是GB2312(SQL Server的默认字符编码可能是这个,我不肯定),我用的是微软官方提供的SQLSRV库来连接数据库的(PS:SQL Server 2005开始已经不支持用mssql.dll来连接了),故使用sqlsrv_query($

  • java页面中文乱码的解决办法

    在页面提交到tomcat乱码 解决方法是在tomcat/conf/server.xml中进行配置以tomcat6.0.32为例,需将以下代码:Xml代码 复制代码 代码如下: <Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"/><Connector port="8080"

  • .NET中文乱码的解决方法分享

    前言:最近升级一个由VS05开发的项目,当迁移至VS10后,试运行,啊~!我文盲了,怎么一个汉字都不认识了!(乱码纷纷的说) 说明:本文以将项目改为UTF8编码为例. 解决之道 1.修改配置文件 复制代码 代码如下: <globalization requestEncoding="UTF-8" responseEncoding="UTF-8"  responseHeaderEncoding="UTF-8"/> ≯这步没解决,Next!

  • 解决MySQL客户端输出窗口显示中文乱码问题的办法

    最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示: 上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的命令查看输出窗口使用的字符编码:show variables like 'char%'; 命令执行完成之后显示结果如下所示: 可以看到,现在是使用utf8字符编码来显示中文数据的,但是因为操作系统是中文操作系统,默认使用的字符集是GB2312,所以需要把输出窗口使用的字符编码

  • iis伪静态中文url出现乱码的解决办法

    首先要看下你安装的是IIS rewrite_2.0还是ISAPI_Rewrite 3.x的伪静态插件. 如果你安装的是IIS rewrite_2.0的话,传递的参数都是UTF-8格式的,如果你网站是GBK的就会出现中文连接乱码. 解决办法: rewrite_2.0规则写法: RewriteRule ^news_list_([0-9a-zA-Z\u4e00-\u9fa5]+)\.html$ news_list.asp?BigClassName=$1 [L] 比如页面传递参数是 zhongwen:

  • 解决URL地址中的中文乱码问题的办法

    解决URL地址中的中文乱码问题的办法 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. 1.  问题的引出 在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址. 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息

随机推荐