彻底治疗乱码顽症——J2EE.Web应用中文问题解决方案(转)

来源:互联网 发布:mac激活时间相差20天 编辑:程序博客网 时间:2024/06/05 00:15

对于一个Java初学者来说,经常碰到的一个问题恐怕就是中文问题了。其实很正常,我们有几千年的悠久历史嘛,博大精深,岂能是小小的计算机语言所能包容 的?呵呵,开个玩笑。但是不可否认的一个事实就是,就算是一个比较有经验的开发人员,也经常面对着屏幕上的乱码而大伤脑筋。

  想究其原因、彻底解决这一问题吗?follow me……

乱码原因
   java内核是unicode的。但Java总是根据操作系统的默认编码字符集来决定字符串的初始编码,而且Java系统的输入和输出的都是采取操作系 统的默认编码,而数据库、文件、网络传输中的字节流……采用的编码更是各不相同。所以不可避免的就会出现烦人的乱码问题了。

解决办法
  1、GB2312、GBK、Unicode(UTF8)?
  从字符集的大小比较 GB2312 < GBK < UTF8,很显然,如果我们采用UTF8作为系统编码的话,是不会有错的。而且如果你要考虑国际化的话,UTF8似乎是你唯一的选择
  2、开发和编译代码时指定字符集为UTF-8
  JBuilder和Eclipse都可以在项目属性中设置。
  3、使用过滤器
  编写过滤器
package com.javer.test.language;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
* <p>Title: EncodingFilter</p>
* @author javer(QQ:84831612)
* @version 1.0
* @link http://blog.csdn.net/java008
*/
public class EncodingFilter
implements Filter
{
FilterConfig config;

public void init(FilterConfig parm1)
throws javax.servlet.ServletException
{
this.config = parm1;
}

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws java.io.IOException, javax.servlet.ServletException
{
if (req.getCharacterEncoding() == null || !req.getCharacterEncoding().equals("UTF-8"))
{
req.setCharacterEncoding("UTF-8");
}
chain.doFilter(req, res);
}

public void destroy()
{
this.config = null;
}
} 在web.xml文件中配置该过滤器
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>javer‘s project</display-name>
<filter>
<filter-name>EncodingFilter</filter-name>
<display-name>EncodingFilter</display-name>
<description>对编码进行转换</description>
<filter-class>com.javer.test.language.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app> 4、在JSP 中进行声明
  在JSP头部声明<%@ page contentType="text/html;charset= UTF-8" %>
  在Jsp的html代码中声明<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5、数据库管理
  一般数据库都可以通过管理设置设定UTF-8
  也可以通过jdbc链接时指定编码参数,如:mysql:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
  6、其它
  其他所有和外界交互时能够设定编码时就设定UTF-8,例如读取文件,操作XML等。总之,记住一个原则:在所有系统的出入口处都用UTF8编码进行“翻译”!
 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老婆生了孩子性冷淡怎么办 宝宝有轻度地贫怎么办 不小心怀孕了该怎么办 45岁不小心怀了怎么办 喝了酒胃不舒服怎么办 备孕期间孕酮低怎么办 2个月宝宝不睡觉怎么办 生完小孩肚子还是很大怎么办 生完孩子肚皮疼怎么办 生完孩子有肚腩怎么办 生完宝宝肚子还是很大怎么办 生完孩子小腹大怎么办 生完孩子肚皮松怎么办 生过孩子肚子松怎么办 生完孩子肚皮痒怎么办 生完小孩肚子松弛怎么办 生了孩子肚子大怎么办 嫁到别的省户口怎么办 孕中期假性宫缩怎么办 频繁的假性宫缩怎么办 显卡风扇不转了怎么办 老是想不好的事怎么办 做人工受孕多囊怎么办 子宫内有囊肿该怎么办 子宫长了个囊肿怎么办 怀孕后不想要该怎么办 20多岁雌激素低怎么办 生完小孩后子宫下垂怎么办 取环之前同房了怎么办 做人流后又怀孕怎么办 仓鼠长了个肿瘤怎么办 过敏留下的黑印怎么办 脸上痘痘发炎了怎么办 脸上皮肤红痒怎么办啊 皮肤有一片红痒怎么办 脸过敏期间很干怎么办 怀孕了用了消糜栓怎么办 乳酸杆菌少或无怎么办 怀孕了白带有异味怎么办 怀孕清洁度iv度怎么办 怀孕了下面有异味怎么办