JSP中Ajax乱码问题解决方法

AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数
 

 代码如下 复制代码
function uniencode(text)  
{  
    text = escape(text.toString()).replace(/\+/g, "%2B");  
    var matches = text.match(/(%([0-9A-F]{2}))/gi);  
    if (matches)  
    {  
        for (var matchid = 0; matchid < matches.length; matchid++)  
        {  
            var code = matches[matchid].substring(1,3);  
            if (parseInt(code, 16) >= 128)  
            {  
                text = text.replace(matches[matchid], '%u00' + code);  
            }  
        }  
    }  
    text = text.replace('%25', '%u0025');  
   
    return text;  
}

 
当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码.
 

 代码如下 复制代码
function convert_int_to_utf8($intval)  
{  
    $intvalintval = intval($intval);  
    switch ($intval)  
    {  
        // 1 byte, 7 bits  
        case 0:  
            return chr(0);  
        case ($intval & 0x7F):  
            return chr($intval);  
   
        // 2 bytes, 11 bits  
        case ($intval & 0x7FF):  
            return chr(0xC0 | (($intval >> 6) & 0x1F)) .  
                chr(0x80 | ($intval & 0x3F));  
   
        // 3 bytes, 16 bits  
        case ($intval & 0xFFFF):  
            return chr(0xE0 | (($intval >> 12) & 0x0F)) .  
                chr(0x80 | (($intval >> 6) & 0x3F)) .  
                chr (0x80 | ($intval & 0x3F));  
   
        // 4 bytes, 21 bits  
        case ($intval & 0x1FFFFF):  
            return chr(0xF0 | ($intval >> 18)) .  
                chr(0x80 | (($intval >> 12) & 0x3F)) .  
                chr(0x80 | (($intval >> 6) & 0x3F)) .  
                chr(0x80 | ($intval & 0x3F));  
    }  
}

补充:get请求的中文乱码问题的解决方法

一般Tocant 的url编码是iso-8859-1(查看tocat/conf/server.xml 中的Connector 节点没有写URIEncoding="xxxxxx") 如下:

 代码如下 复制代码

<Connector port="8080" protocol="HTTP/1.1"
  connectionTimeout="20000"
  redirectPort="8443" />

如果我们在servlet 中写如下的代码
   
String username = request.getParameter("name");//name 是get 请求过来的参数,这里已经将get请求过来的字节码转化成iso-8859-1的的码了,解码错误
byte[] b = username.getBytes("iso-8859-1");//所以要重新转化为字节码,再用正确的编码方式解码,正确编码方式就是 jsp那个页面的编码方式,

 代码如下 复制代码
username =new String(b,"GBK");
System.out.print(username );
时间: 2024-10-26 12:37:46

JSP中Ajax乱码问题解决方法的相关文章

ASP.NET中AJAX乱码解决方法

ajax乱码是一个程序员经常会碰到的问题,今天我们要讲的是关于asp教程.net中ajax乱码解决方法哦,下面先详细的介绍了处理方法,然后再举例说明 利用asp.net教程 string s = system.text.encoding.utf8.getstring(request.binaryread(request.contentlength));   system.collections.specialized.namevaluecollection form = httputility.

jsp传值中文乱码问题解决方法示例介绍

在jsp中,我们经常从数据库读取数据返回客户端,但我们常常在制作时出现乱码现象,所以我们可以用<%request.setCharacterEncoding("UTF-8");%>这个方法来保证中文的正确输出,下面举个例子吧, 我 们要接住表单的值或者把数据库数据打印出来的之前,先把<%request.setCharacterEncoding("UTF- 8");%>放在他们的前面,然后,表单的提交方式必须是post,即method="

jsp传值中文乱码问题解决方法示例介绍_JSP编程

在jsp中,我们经常从数据库读取数据返回客户端,但我们常常在制作时出现乱码现象,所以我们可以用<%request.setCharacterEncoding("UTF-8");%>这个方法来保证中文的正确输出,下面举个例子吧, 我们要接住表单的值或者把数据库数据打印出来的之前,先把<%request.setCharacterEncoding("UTF-8");%>放在他们的前面,然后,表单的提交方式必须是post,即method="p

JSP中解决乱码的方法。用PetStore中的EncodingFilter

js|解决 /* * Copyright 2002 Sun Microsystems, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of sour

ajax 乱码问题解决方法

方法一,设置发送编码要与asp,php接受文档一样就行了. http_request = new activexobject("msxml2.xmlhttp"); http_request.setrequestheader("content-type","application/x-www-form-urlencoded; charset=utf-8"); 方法二, 针对php 直接用 iconv( "utf-8", &quo

jsp 中 ActionForm中文乱码问题解决方法

  jsp教程 中 actionform中文乱码问题解决方法 先我们来了解一下actionform actionform概念 actionform用于封装用户的请求参数,而请求参数是通过jsp页面的表单域传递过来的.因此应 保证actionform的参数,与表单域的名字相同. 编辑本段actionform配置 所有的actionform都被配置在struts-config.xm l文件中,该文件包括了一个form-beans的元素, 该元素内定义了所有actionform,每个actionfor

JSP页面中超链接传递中文参数出现乱码问题解决方法_JSP编程

本文实例讲述了JSP页面中超链接传递中文参数出现乱码问题解决方法.分享给大家供大家参考,具体如下: 这里分析超链接传递中文参数,在接受页面中出现乱码问题的解决方法. 解决方法: 在接受页面里可以如下处理, 复制代码 代码如下: <%=new String(request.getParameter("变量名字").getBytes("ISO-8859-1")) %> 注意这里用的是 new String() 创建一个新的字符串 例题: 页面一: <h

跨浏览器PHP下载文件名中的中文乱码问题解决方法

 这篇文章主要介绍了跨浏览器PHP下载文件名中的中文乱码问题解决方法,涉及php针对中文编码的转码技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了跨浏览器PHP下载文件名中的中文乱码问题解决方法.分享给大家供大家参考.具体如下:   代码如下: <?php $ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "中文 文件名.txt"; $encoded_filename = urlencode(

跨浏览器PHP下载文件名中的中文乱码问题解决方法_php技巧

本文实例讲述了跨浏览器PHP下载文件名中的中文乱码问题解决方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php $ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "中文 文件名.txt"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20",