ajax提交中文乱码问题 简单解决之道

最繁琐的办法末过于结合 getByte,new String (…,’编码格式’) 最终转化为所需要的中文字符;
下面介绍一个不需要如此烦琐的方法来实现
——————————————————————-
ajax默认中文提交以utf-8格式,所以只需要在你的web服务加个过滤器,设置下编码格式即可;
1.注意为防止编码设置无效,请在编码设置完后,显示调用下request.getParameter(“”);(tomcat5.0测试通过)
据说其他服务器,可能显示调用了,也有可能被服务器重置;
2.有时已经有filter需要设置gbk编码,为了不影响原先的filter功能,我是直接在ajax提交时候,带个服务端要设置的编码格式 例如 Ajax.request(“/myaction.do?charset=utf-8″)
服务端filter,要用request.getQueryString() 截取charset值 ,注意千万不要用request.getParameter(“charset”);
3.注意,在没设置编码格式前,不要加 watch监控 比如有个表达式 request.getParameter(“*”);

核心代码如下:
public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException,
            ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        try {
        
                String queryString = httpRequest.getQueryString();
                //获取浏览器提交的charset
                String charset = (String)HttpUtil.getParams(queryString).get(“charset”);
                if(charset!=null){
                    httpRequest.setCharacterEncoding(charset);
                }
                else{
                    httpRequest.setCharacterEncoding(“gbk”);
                }
                //使编码生效,在这之前不要调用request.getParameter

request.getParameter(“”);

        } catch (UnsupportedEncodingException e) {
        }
        // move on to the next
        chain.doFilter(request, response);
    }



评论权限被关闭.



赞助商

文章索引模板

好友推荐链接

强力推荐链接

分类目录

   

统计信息

Translator

Chinese (Simplified) flagItalian flagKorean flagChinese (Traditional) flagPortuguese flagEnglish flagGerman flagFrench flagSpanish flagJapanese flagArabic flagRussian flagGreek flagDutch flagBulgarian flagCzech flag
Croatian flagDanish flagFinnish flagPolish flagSwedish flagNorwegian flag          

标签

专利战 世界 中国 为什么 介绍 使用 公司 分析 利用 功能 原谅我红尘颠倒 发现 天涯 如何 实现 工具 慕容雪村 技术 插件 搜索引擎 支持 数据库 文件 方式 时间 服务器 用户 简单 系统 网站 美国 解决 谁的心不曾柔软 进行 部分 问题 AJAX blog Google LAN Linux MySQL PHP plugin WordPress

热门浏览