`

AJAX中文乱码的几种后台的解决方案

    博客分类:
  • AJAX
阅读更多
1、使用POST方式传参
 sPara += sName + "=" + encodeURI(encodeURI(sValue)) + "&";
 xmlHttp.onreadystatechange = handleStateChange;	
 xmlHttp.open( "POST" , sURL , true );
 xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	
 xmlHttp.send(sPara);


注意,这里我使用了两次encodeURI,encodeURI(encodeURI(sValue))


String providerName = request.getParameter("providerName");
 //post 传递的时候,一定是用utf8编码的
providerName = URLDecoder.decode(providerName , "utf-8");


分析:当调用request.getParameter()函数时,会自动进行一次URI的解码过程,调用时内置的解码过程会导致乱码出现。而URI 编码两次后,request.getParameter()函数得到的是原信息URI编码一次的内容。再用可控的解码函数 java.net.URLDecoder.decode()就可解出原始的正确的信息。

2、使用GET方式传参
GET方式要比POST方法好转码,但是它有字符限制
有两种方式
一、在后台添加unescape方法进行解码
前台使用javascript的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;
       }
      }
     else
     {
      if (pos == -1)
      {
       tmp.append(src.substring(lastPos));
       lastPos=src.length();
       }
      else
      {
       tmp.append(src.substring(lastPos,pos));
       lastPos=pos;
       }
      }
    }
    return tmp.toString();
 }



二、直接使用encodeURI进行转码
前台直接使用encodeURI进行转码
在后台使用request.getParameter("name");就可以得到原始数据。
原因可能是,当调用request.getParameter()函数时,程会自动进行一次URI的解码过

这几种方式都主要用于,前台向后台传数据,后台向前台转数据没有描述


注:文章主要用于自己的经验积累,所以没有写的太细,如有人来看,看不懂也不要骂我啊
分享到:
评论
1 楼 leejah 2010-09-16  
getParameter

相关推荐

    ajax乱码解决方案

    本文将深入探讨Ajax与字符编码相关的技术细节,并提供几种有效的解决策略。 首先,JavaScript处理字符的方式是基于Unicode,这确保了对各种语言的广泛支持。UTF-8编码是一种常见的Unicode实现,它使用1到4个字节来...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    ### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...

    Ajax FireFox IE 乱码兼容问题

    在IT领域,特别是Web开发中,...通过上述解决方案和优化建议,可以有效避免Ajax请求中的乱码问题,提高Web应用的稳定性和用户体验。在实际开发中,应始终关注字符编码的细节,确保数据在传输过程中的正确性和一致性。

    ajax

    针对Ajax中文乱码问题,可以采取以下解决方案: - **检查文件编码**:确保HTML、CSS、JavaScript等文件使用正确的编码格式,如UTF-8。 - **统一编码规范**:在前后端保持一致的字符集,避免在传输过程中出现乱码。 ...

    AJAX编码问题

    本文将详细探讨AJAX编码问题,并提供几种解决方案。 #### 一、AJAX编码问题概述 AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器...

    文章管理系统

    11.解决后台编辑器之前空2格低于一个汉字的问题 12.完善几个细节问题 13.整合20121103~20121220补丁 2012年12月20日 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.富媒体...

    php,ajax实现分页

    总结来说,本文介绍了使用PHP结合Ajax技术实现分页功能的过程,强调了在开发过程中调试代码的重要性,同时指出了在不同浏览器中测试的必要性,并分享了一些实际开发过程中遇到的常见问题和解决方案。这不仅包括了...

    “平安行”驾校信息管理系统的设计与实现开题报告【答辩高分内容】.docx

    JSP中文乱码问题的探讨与解决方法[J]. 福建电脑, 2020, 36(04):36-41. - [2] 赵晓丹. 网页开发中的JSP技术分析[J]. 南方农机, 2019, 50(20):247-248. - [3] 段震. 浅谈MySQL数据库有关数据备份的几种方法[J]. 山西...

    FCKEditor试用指南

    - 解决方案包括使用正确的编码格式等。 4. **创建中文名目录会出现乱码** 5. **引用中文名文件的图片不能正常显示** - 确保路径正确并且使用了正确的字符集。 6. **控件允许上传的文件的类型** - 示例代码: ...

Global site tag (gtag.js) - Google Analytics