码迷,mamicode.com
首页 > 其他好文 > 详细

编码相关

时间:2017-10-28 12:44:18      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:tco   ebean   pat   font   16px   com   att   ret   .class   

JSP:

第一阶段,jsp编译成.java。它会根据pageEncoding的设定读取JSP。结果是由指定的编码方案翻译成统一的UTF-8的JAVA源码

第二阶段,JAVAC用UTF-8的encoding读取.java文件,编译成UTF-8 encoding的.class文件

第三阶段,输出的网页用contentType

 


处理中文字符乱码:

对客户端请求进行重新编码

request.setCharacterEncoding("UTF-8")

 

对服务器响应进行重新编码

response.setCharacterEncoding("UTF-8")

 

编写JavaBean对乱码字符进行转码

(例如:通过表单传递中文数据)

 

String name =new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");

 

import java.io.UnsupportedEncodingException;

public class CharactorEncoding{

public CharactorEncoding(){
}

public String toString(String str){
//转换字符
    String text = "";

//判断要转码的字符是否有效
    if(str != null && !"".equals(str)){
        try{
//将字符串进行编码处理
        text = new String(str.getBytes("ISO-8859-1"),"UTF-8");
        }catch(UnsupportedEncodingException e){
        e.printStackTrace();
        }
    }

//返回后的字符串
    return text;

}
}

//页面对表单请求进行处理
<jsp:useBean id="name" class="Models">
<jsp:useBean id="encoding" class="CharactorEncoding">
<jsp:setProperty property="*" name="name">
<%= encoding.toString(name.getXXX()) %>

 


 

由于Web容器内部所使用的编码格式并不支持中文字符集,所以,处理浏览器请求中的中文数据就会出现乱码现象。

通过过滤器来处理字符编码:

public class CharactorFilter implements Filter {
    String encoding = null;

    public void destroy() {
        encoding = null;
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        if (encoding != null){
            req.setCharacterEncoding(encoding);
            resp.setContentType("text/html;charset="+encoding);
        }
        chain.doFilter(req, resp);
    }

    public void init(FilterConfig config) throws ServletException {
        encoding = config.getInitParameter("encoding");
    }

}


    <filter>
        <filter-name>Charactor</filter-name>
        <filter-class>com.lx.CharactorFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Charactor</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

编码相关

标签:tco   ebean   pat   font   16px   com   att   ret   .class   

原文地址:http://www.cnblogs.com/praytell/p/7562886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!