[原创]Ajax中文处理乱码问题总结

Junglesong 发表于 2007-10-27 17:34:43

乱码是经常困扰非英语Web程序开发的程序员的问题,可喜的是网上的解决方案也不少,有从客户端想办法的,有从服务端想办法的.本人收集了一些材料,总结出自认为比较容易轻松的方案如下,希望与大家一起探讨.

1.Jsp页面正确显示中文(其实这个不是Ajax的)
页首写入:
         <%@ page contentType="text/html; charset=UTF-8"%>
<Title>后写入:
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
这样静态中文就可以显示了.

2.Java解析XMLHttpRequest传递过来的中文.
如果把中文直接放在URL中通过XMLHttpRequest传到Servlet中,中文会变成"??",其实这时用下列函数转一下码即可:

String type =StringUtil.getDecodeParamFromReq("type",request);// 取代了原来的request.getParameter("type");

StringUtil类的完整代码如下:
package com.sitinspring.nnyy.util;

import javax.servlet.http.HttpServletRequest;

public final class StringUtil {
    
private StringUtil() {

    }


    
public static String getDecodeParamFromReq(String paramName,
            HttpServletRequest request) 
{
        String retval 
= request.getParameter(paramName);
        
        
try {
            
// 中间用ISO-8859-1过渡
            byte[] b = retval.getBytes("8859_1");

            
// 转换成GB2312字符
            retval = new String(b, "GB2312");
        }
 catch (Exception e) {
            e.printStackTrace();
        }


        
return retval;
    }

}

此后type将得到正确的中文.

3.Response如何传出存在中文的xml
很简单,在Servlet的doPost函数首部书写一下三句即可
response.setContentType("text/xml;charset=UTF-8");
response.setHeader(
"Cache-Control""no-cache");
response.setCharacterEncoding(
"UTF-8");

此后在js解析responseXML时也不需要escape函数的帮忙了.

示例页面:


以上
收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定