Ajax中文处理乱码

乱码是经常困扰非英语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函数的帮忙了.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值