• jquery .post .get中文参数乱码解决方法详解


    aliyun阿里云服务器

    jquery默认的编码为utf-8,做项目时有时处于项目需要用到ajax提交中文参数,乱码问题就很头疼了,折腾了许久终于弄出来了。为了便于传输,我们首先将需要用到的参数用javascript自带的函数escape加密,然后在php端口用unescape函数解密即可,当然php默认是没有unescape这个函数的,这就得自己弄了,现将代码分享给大家:

    javascript端直接用函数即可。

    定义和用法

    escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

    语法

    escape(string)

    返回值

    已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。

    说明

    该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。

    提示和注释

    提示:可以使用 unescape() 对 escape() 编码的字符串进行解码。

    注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。

    php端的unescape原型:

    /**
     * @desc javascript escape解密
     * @author mengdj<mengdj@outlook.com>
     */
    if(!function_exists("unescape")){
    	function unescape($str) {
    	 $str = rawurldecode($str);
    	 preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r);
    	 $ar = $r[0];
    	 foreach($ar as $k=>$v){
    	  if(substr($v,0,2) == "%u")
    	   $ar[$k] = mb_convert_encoding(pack("H4",substr($v,-4)),"gb2312","UCS-2");
    	  elseif(substr($v,0,3) == "&#x")
    	   $ar[$k] = mb_convert_encoding(pack("H4",substr($v,3,-1)),"gb2312","UCS-2");
    	  elseif(substr($v,0,2) == "&#") {
    	   $ar[$k] = mb_convert_encoding(pack("H4",substr($v,2,-1)),"gb2312","UCS-2");
    	  }
    	 }
    	 return join("",$ar);
    	}
    }
    

     本文出自:http://www.cnblogs.com/mengdejun/p/jquery_php_post_get_unescape_escape.html 转载请保留来源和作者信息。

  • 相关阅读:
    Java swing 代码例子
    MySql
    swing 下拉菜单
    uiautomator2.0的配置的两种方法
    【Java】边框总结
    Java可视操作界面例子
    Java多线程例子
    使用Java让android手机自动执行重复重启
    形参的一种特殊写法
    this 基础使用方法
  • 原文地址:https://www.cnblogs.com/mengdejun/p/jquery_php_post_get_unescape_escape.html
Copyright © 2020-2023  润新知