中文转Unicode:HttpUtility.UrlEncodeUnicode(string str);
转换后中文格式:"%uxxxx" 举例:"柳_abc123" 转换结果是:"%u67f3_abc123"

Unicode转中文1:HttpUtility.UrlDecode(string str);
str格式:"%uxxxx" ,举例:"%u67f3_abc123"

Unicode转中文2:Regex.Unescape(string str);
str格式:"\uxxxx" ,举例:"\u67f3_abc123"

 

 

参考资料:http://hi.baidu.com/eegcn/blog/item/7315f799a2e57f136f068c55.html

1.window.escape()与HttpUtility.UrlEncodeUnicode()编码格式一样:将一个汉字编码为%uxxxx格式
不会被window.escape编码的字符有:@ _ - . * / + 这与http://www.w3school.com.cn/js/jsref_escape.asp上的解释不符合

2.window.encodeURIComponent()与HttpUtility.UrlEncode()编码格式一样:将一个汉字编码为%xx%xx%xx的格式

不会被window.encodeURIComponent编码的字符有:'()*-._!~ 这与http://www.w3school.com.cn/js/jsref_encodeURIComponent.asp解释相符合

不会被HttpUtility.UrlEncode编码的字符有:'()*-._!相比较而言,HttpUtility.UrlEncode比window.encodeURIComponent多一个 ~ 编码

3.不会被window.encodeURI编码的字符有:-_.!*();/?:@&=$,# 与encodeURIComponent对比,发现encodeURI不对:;/?:@&=+$,#这些用于分隔 URI 组件的标点符号进行编码

Asp.Net编码与JS编码的区别:

1. 不会被HttpUtility.UrlEncodeUnicode编码的字符与不会被HttpUtility.UrlEncode编码的字符一样,而escape和encodeURIComponent不编码的字符不一样

2.  HttpUtility.UrlEncode和HttpUtility.UrlEncodeUnicode会对/编码,而escape和encodeURIComponent会对/编码,encodeURI不会对/编码

3.  HttpUtility.UrlEncode()和HttpUtility.UrlEncodeUnicode()会把空格编码为 +,而escape,encodeURIComponent,encodeURI都会将空格编码为%20

使用ajax提交一个字符串:
  1.  xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  var postStr="val={name:'梅小伟',age:19}";
  xmlHttp.send(postStr);

客户端发送请求如下:
  POST /index.aspx HTTP/1.1
  Accept: */*
  Accept-Language: zh-cn
  Referer: http://localhost.:3910/Default.aspx
  Content-Type: application/x-www-form-urlencoded
  Accept-Encoding: gzip, deflate
  User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;  .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; CIBA; .NET  CLR 3.0.4506.2152; .NET CLR 3.5.30729; baiduie8)
  Host: localhost.:3910
  Content-Length: 29
  Connection: Keep-Alive
  Pragma: no-cache

val={name:'梅小伟',age:19}//发现这里没有经过编码,直接以2进制方式发送

在服务端index.aspx中打断点,发现Request.Form为:val=%7bname%3a'%u6885%u5c0f%u4f1f'%2cage%3a19%7d(这里使用了escape编码)使用Request.Form[0]取出的值和使用Request.Form["val"]取出的都为“{name:'梅小伟',age:19}”

2.  xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  var postStr=window.encodeURIComponent("val={name:'梅小伟',age:19}");
  xmlHttp.send(postStr);

客户端发送请求如下:
  POST /index.aspx HTTP/1.1
  Accept: */*
  Accept-Language: zh-cn
  Referer: http://localhost.:3910/Default.aspx
  Content-Type: application/x-www-form-urlencoded
  Accept-Encoding: gzip, deflate
  User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;  .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; CIBA; .NET  CLR 3.0.4506.2152; .NET CLR 3.5.30729; baiduie8)
  Host: localhost.:3910
  Content-Length: 59
  Connection: Keep-Alive
  Pragma: no-cache

val%3D%7Bname%3A'%E6%A2%85%E5%B0%8F%E4%BC%9F'%2Cage%3A19%7D//发现这里使用了window.encodeURIComponent加码

在服务端index.aspx中打断点,发现Request.Form为:val%3d%7bname%3a'%u6885%u5c0f%u4f1f'%2cage%3a19%7d(这里居然使用了escape编码,而不是encodeURIComponent编码),使用Request.Form[0]取出的值为“val={name:'梅小伟',age:19}”,使用Request.Form["val"]取出的值为null(这是因为客户端发送请求时将=编码为%3d了,如果使用window.encodeURI这里就能取出Request.Form["val"]为:“{name:'梅小伟',age:19}”了)

总结:不是使用get或者post,只要都是使用form的enctype属性的默认值application/x-www-form-urlencoded,所以如果你要传的值都会经过window.encodeURIComponent()编码再传送(除了值包含空格不会被编码为%20,而是编码为+).传到服务器后,可以用Server.UrlDecode()进行解码。但是要注意,不管是get方式还是post方式,enctype为application/x-www-form-urlencoded还是multipart/form-data,用asp.net在后台查看Request.QueryString和Request.Form的时候,中文又变成了escape编码格式,例如Request.Form=__VIEWSTATE=%2fwEPDwUJNzgzNDMwNTMzZGSvF5y%2bl0lztppRS7QNr4qmrF4KTw%3d%3d&mm=%u6556%u5fb7%u8428%u7684(英语字母不会被编码,而一些符号使用encodeURIComponent和escape编码后相同,如=,$等等)。

为什么优先使用encodeURIComponent而不是escape?
  escape方法并不编码字符+。而我们知道,在用户提交的表单字段中,如果有空格,则会被转化为+字符,而服务器解析的时候则会认为+号代表空格。由于这个缺陷,escape方法并不能正确地处理所有的非ASCII字符,你应当尽量避免使用escape方法,取而代之,你最好选择 encodeURIComponent()方法。

jquery 编码解码的更多相关文章

  1. URL链接后面的参数解析,与decode编码解码;页面刷新回到顶部jquery

    function request() { var urlStr = location.search; ) { theRequest = []; return; } urlStr = urlStr.su ...

  2. 编码解码:UrlDecode解码及UrlEncode编码的jQuery方法

    找了n多方法,终于找到,不容易. C#:Server.UrlEncode(ur) Jquery解码:decodeURIComponent(url); Jquery编码:encodeURICompone ...

  3. Js/Jquery- Base64和UrlEncode编码解码

    最近几天遇到一些URL参数明文显示的问题,因为是明文显示,容易让人通过改变参数查看到他没有权限看到内容. 一开始我的做法是自定义了规则,然后原始的那种URL编码.可是URL编译后效果不理想,他无法编译 ...

  4. http,javascript的编码解码

    http,javascript的编码解码 请求与响应的编码应分开分析 两者的编码,解码处理是相对独立的流程 依赖于相对独立的header: request header, response heade ...

  5. C# base 64图片编码解码

    使用WinForm实现了图片base64编码解码的 效果图: 示例base 64编码字符串: /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKD ...

  6. java中文乱码解决之道(五)-----java是如何编码解码的

    在上篇博客中LZ阐述了java各个渠道转码的过程,阐述了java在运行过程中那些步骤在进行转码,在这些转码过程中如果一处出现问题就很有可能会产生乱码!下面LZ就讲述java在转码过程中是如何来进行编码 ...

  7. java中文乱码解决之道(六)-----javaWeb中的编码解码

    在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言, ...

  8. Unicode编码解码在线转换工具

    // Unicode编码解码在线转换工具 Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standar ...

  9. .NET编码解码(HtmlEncode与HtmlEncode)

    编码代码: System.Web.HttpUtility.HtmlEncode("<a href=\"http://hovertree.com/\">何问起& ...

随机推荐

  1. 41. 这张表lbdeveloplog可以查看各个对象的提交情况,包括是哪个IP提交的

    lbdeveloplog 这张表lbdeveloplog可以查看各个对象的提交情况,包括是哪个IP提交的

  2. c# 文件夾操作

    #region 圖片對應異動           string newFilePath = "~/FileUpLoad/Book/" + bookModel.BookNo;     ...

  3. 第五百七十八、九天 how can I 坚持

    这样下去不行啊 ,昨天晚上回来捣鼓了一晚上手机,看个视频还经常开小差,得全力以赴了,不能抱着打酱油的心态了,加油. 今天和yj聊了聊,好多事啊,不能一心工作了,还得考虑结婚,也是醉了. 努力吧,先把考 ...

  4. 从Unity引擎过度到Unreal4引擎(最终版)

    原文地址:http://demo.netfoucs.com/u011707076/article/details/44036839 前言 寒假回家到现在已经有十多天了,这些天回家不是睡就是吃....哎 ...

  5. HTML第二天

    针对html做了一个知识点的思维导图

  6. 手机抓包xcode自带命令行工具配合wireshark实现

    三.最佳方式:rvictl命令 优点:简单,而且可以抓所有网络接口的数据: 缺点:似乎没有,要求手机iOS5以上不算要求吧?如果说缺点,就是这个命令是Xcode的Command Line Tools ...

  7. 一款好用的杀毒软件-pchunter64

    360真是猛,用system权限运行了一坨后台进程.今天清理系统盘想删掉360发现根本没权限.进程又杀不掉. 最后使用 pchuter64 强行干掉了360 避免了 重装系统的尴尬.360作为世界第一 ...

  8. Spring MVC实例(增删改查)

    数据库配置文件application-context-jdbc.xml <?xml version="1.0" encoding="UTF-8"?> ...

  9. java实现smtp邮件发送

    一.准备工作 首先你需要已一个发送邮箱,一般的邮箱都有SMTP.POP3服务,比如QQ邮箱,登陆QQ邮箱开启SMTP服务,开启是服务器会提示你设置独立密码,这个密码是跟邮箱正常登陆的密码不同的,这个是 ...

  10. Ajax2

    一.完整版Ajax $.ajax({ url: "Ashxs/Login.ashx", data: { "name": name, "pwd" ...