关于使用XMLHttpRequest提交和收到汉字时的乱码问题

这个问题可以在google上搜到很多答案,不过由于本人愚钝凡是以“XMLHttpRequest 乱码”搜到的文章,没有一个能圆满解决我的问题,不过从中受到不少启发,并最终帮我解决了问题.
客户端
    使用XMLHttpRequest发送和接收数据
服务器
    使用Java写servlet程序处理,并返回数据
问题:遇到汉字时出现乱码
解决:
    1. 客户端 ---> 服务器
       首先客户端发送数据前要先编码
       escape(escape('数据'));
       注意一定要两次escape;
       服务器收到的数据要解码,注意只需解码一次
       下面是从网山搜到的解码函数:
       public static String unescape(String src)
       {
        StringBuffer tmp = new StringBuffer();
        tmp.ensureCapacity(src.length());
        int lastPos = 0, pos = 0;
        char ch;
        while (lastPos < src.length()) {
            pos = src.indexOf("%", lastPos);
            if(pos == lastPos)  {
                if(src.charAt(pos + 1) == 'u') {
                    ch = (char)Integer.parseInt(src.substring(pos + 2, pos + 6), 16);
                    tmp.append(ch);
                    lastPos = pos + 6;
                }
                else{
                    ch = (char)Integer.parseInt(src.substring(pos + 1, pos + 3), 16);
                    tmp.append(ch);
                    lastPos = pos + 3;
                }
       

转载于:https://www.cnblogs.com/dotjava/articles/1264936.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值