JAVA编码的问题

在进行javaweb 开发时我们会经常的遇到中文乱码问题,

jsp中我们可以这样的处理:

<meta http-equiv="content-type" content="text/html; charset=UTF-8">   

 

servlet中我们可以这样的处理:

new String(key.getBytes("ISO-8859-1", "utf-8"))ISO-8859-1字符集形式转换成UTF-8形式。

 

packagecom.c.tools;

 

import java.io.UnsupportedEncodingException;

 

publicclass HtmlHelper {

  publicstatic String toGBK(String s){

     String ss="";

     try {

       ss=new String(s.getBytes("iso-8859-1"),"GBK");

     } catch (UnsupportedEncodingException e) {      

       e.printStackTrace();

     }

    

     returnss;

  }

}

 

JSP页面出现中文乱码的两种解决方案

页面出现中文乱码的两种解决方案页面出现中文乱码的两种解决方案

页面出现中文乱码的两种解决方案:

第一种:硬编码方式

 

修改字符集设置:

: <%@ page pageEncoding=

"GB2312" %>

或者,<%@ page contentType="text/html;GB2312" %>

该代码的作用就是告诉JSP引擎(如Tomcat),本页面使用的字符集是GB2312。如果

没有此行代码,JSP则使用默认的字符集(通常为utf-8)。

  2)

))

)更改

相关的代码:

 

 

设置输出页面的字符集GB2312,并对获取的内容进行强制转码;

 //JSP

引擎会自动把输出的页面转换成指定的字符集

 response.setCharacterEncoding("text/html;GB2312");

 //使用request.getParpameter("参数名");获得参数值

 //参数值默认的字符集是ISO8859_1,如果不进行字符集转换,将导致汉字乱码

 String sname = request.getParameter("name") ;

 String name = new String(sname.getBytes("ISO8859_1"),"GB2312") ;

    //new String(字符串值.getBytes(“原编码方式”),”目录编码方式”);

 

 

第二种:采用过滤器方式

采用过滤器方式采用过滤器方式

在 .jsp 页面中

 

 

,修改字符集设置

 

 

: <%@ page pageEncoding=

"GB2312" %>

或者,<%@ page contentType="text/html;GB2312" %>

该代码的作用就是告诉JSP引擎(如Tomcat),本页面使用的字符集是GB2312。如果

没有此行代码,JSP则使用默认的字符集(通常为utf-8)。

   2)

))

)编写一个过滤器

:CharacterEncodingFilter.java package

 cn.wjz.web.filter;

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;

/** 请求数据统一编码过滤器 */

public class CharacterEncodingFilter implements Filter {

    private FilterConfig config ;

 //此Filter被释放时的回调方法

 public void destroy() {

 }

 //主要做过滤工作的方法

 //FilterChain用于调用过滤器链中的下一个过滤器  public void doFilter(ServletRequest request, 

ServletResponse response,FilterChain chain) 

throws IOException, ServletException {

        //获取Filter的初始化参数的值

  String encoding = config.getInitParameter("encoding") ;

     if(encoding != null && !"".equals(encoding)){

     //设置请求数据的编码方式

request.setCharacterEncoding(encoding) ;  

  }

  //把请求和响应对象传给过滤链中的下一个要调用的过滤器或Servlet

  chain.doFilter(request, response) ;

 }

 //Filter初始化时的回调方法

 //FilterConfig接口实例中封装了这个Filter的初始化参数

 public void init(FilterConfig config) throws ServletException {

          this.config = config ;

 }

}   

3)

))

)注册过滤器

注册过滤器注册过滤器

注册过滤器,

,,

,修改配置文件

修改配置文件修改配置文件

修改配置文件web.xml <!-- 定义一个过滤器 -->

<filter>

<filter-name>characterEncodingFilter</filter-name>

<filter-class>cn.wjz.web.filter.CharacterEncodingFilter

</filter-class>

<!-- 配置初始化参数 -->

<init-param>

<param-name>encoding</param-name>

<!—设置encoding的值为GB2312 -->

<param-value>GB2312</param-value>

</init-param>

</filter>

<!-- 过滤器的映射配置 -->

<filter-mapping>

<filter-name>characterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值