中文转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. jq 编码 php解码,jQuery编码转化base64通过AJAX上传

    这次给大家带来jQuery编码转化base64通过AJAX上传,jQuery编码转化base64通过AJAX上传的注意事项有哪些,下面就是实战案例,一起来看一下. 本文实例讲述了jQuery实现文件编 ...

  2. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

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

    原文:.NET编码解码(HtmlEncode与HtmlEncode) 编码代码: System.Web.HttpUtility.HtmlEncode("<a href=\"h ...

  4. js base64 编码解码

    js base64 编码解码 encode decode,可以直接使用 function Base64() {// private property_keyStr = "ABCDEFGHIJ ...

  5. python使用base64编码解码数据

    python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...

  6. python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)-阿里云开发者社区...

    python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...

  7. java url加密解密,java URL 编码解码,该如何解决

    java URL 编码解码 我写了两个接口 一个是对字符串加密 的,一个是解密的  .加密的可以通过调用接口生成加密字符串如下: Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3 ...

  8. 编码/解码和进制转化工具hURL

    编码/解码和进制转化工具hURL 在安全应用中,各种编码方式被广泛应用,如URL编码.HTML编码.BASE64等.而在数据分析时候,各种进制的转化也尤为频繁.为了方便解决这类问题,Kali Linu ...

  9. python3 url 编码 解码

    对于url编码的转换,主要用urllib.parse包中的quote和unquote方法. quote进行编码,unquote进行解码. 代码实例: import urllib.parseu = &q ...

最新文章

  1. mysql存储过程number类型_MySQL存储过程的基本函数(三)
  2. [转]Supporting OData Query Options in ASP.NET Web API 2
  3. 机房重构 之 抽象工厂+反射+配置文件 实现数据库訪问
  4. CNN结构:MXNet设计和实现简介
  5. 【二分答案】【NOIP模拟10-21】的士碰撞
  6. centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
  7. windows 计算机 快捷键,Windows7计算器快捷键汇总
  8. java ini_Java操作Ini文件
  9. Uva - 1589 - Xiangqi
  10. java星号心形代码_c语言实现星号爱心的代码
  11. Ubuntu16.04安装运行go-ipfs
  12. python语言编写从一加到100_python学习: 如何循序渐进学习Python语言
  13. eva新世纪福音战士_新世纪福音战士EVA,一部划时代的作品!
  14. proteus7.7+Keil2仿真80C51控制流水灯
  15. PDPS软件:PSZ格式文件的保存与打开方法
  16. python +flask 制作一个实时热搜采集接口 加入百度热搜和微博热搜 并实时滚动代码 嵌入到你的帝国CMS或WP博客 或任意框架网站
  17. pqc的中文全称_OQC 、PQC、LQC、OQA的英文分别是什么?主要做什么?
  18. dnf加物理攻击的卡片有哪些_物理百分比职业附魔参考 高性价比卡片推荐
  19. 七星配资沪指低频震荡
  20. javaScript能做什么

热门文章

  1. 如何在Linux系统服务器中重命名目录
  2. 谷歌学术403异常处理
  3. Keil MDK5 详细安装教程
  4. 在不停业务的情况下重启ES集群中的节点
  5. 安装colmap时报错“METIS_INCLUDE_DIRS-NOTFOUND“
  6. 谈谈“数据库中间件”生态与发展
  7. 【数据库】数据库的基础知识
  8. Some/IP和DoIP有什么区别?
  9. MAC 活动监视器部分状态缺失
  10. 一天发十万封邮件方法_网上投递简历,如何避免求职邮件成为垃圾?