java跨页面传值解码_JavaEE中传值乱码问题

Java语言默认的编码方式是UNICODE,而我们中国人通常使用的文件和数据库都是基于GB2312或者BIG5等方式编码的

不管是Jsp还是页面还是数据库都有自己的默认的获取参数的编码类型,如果传入的参数类型与获取的编码类型不一致就会导致乱码问题。

Jsp传值到页面时乱码

如果在JSP将变量输出到页面时出现了乱码,可以通过设置response.setContentType("text/html;charset=GBK")

或response.setContentType("text/html;charset=gb2312"

或new String(str.getBytes("ISO-8859-1"),"GBK")以iso-8859-1编码方式转化成字节数组,而“GBK”是目标编码方式。

页面传值到Jsp时乱码

解决这类乱码问题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方式:request.setCharacterEncoding("GBK")或request.setCharacterEncoding("gb2312")。

Java与数据库之间的乱码

大部分数据库都支持以unicode编码方式,所以解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。很多数据库驱动自动支持unicode,如Microsoft的SQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,

如:mysql驱动:jdbc:mysql://localhost/WEBCLDB?useUnicode=true&characterEncoding=GBK。

还有一种比较全能的办法是加过滤器(不是万能的)

这是java文件代码(java文件拷贝后就可用,配置按提示配完就可)

package com.xfht.struts.filter;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class CharacterFilter extends HttpServlet implements Filter{

public void init(FilterConfig filterconfig) throws ServletException

{

//init 方法在整个过滤器的生命周期中仅执行一次, init() 方法有一个 FilterConfig 参数,该参数用于保存与 Filter 配置相关的数据信息

}

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain filterChain) throws ServletException,IOException {

request.setCharacterEncoding("GBK");

response.setCharacterEncoding("GBK");//设置编码

filterChain.doFilter(request, response);

}

//ServletRequest 定义一个对象,用于封装用户的请求。ServletResponse 定义一个对象,用于封装用户的响应。FilterChain 用于调用过滤器链中的下一个过滤器。

}

过滤器XML配置如下:

CharacterFilter

包.类名

CharacterFilter

/*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值