HTTP转义字符

1,HTTP字符转义

H5使用ajax将后台传输数据时url将特殊符号进行了,特殊处理,就只能通过编码形式避免这种情况发生

#   用来标志特定的文档位置   %23

%  对特殊字符进行编码         %25

&   分隔不同的变量值对         %26

+    在变量值中表示空格       %2B

/     表示目录路径               %2F

\     表示目录路径              %5C

=    用来连接键和值           %3D

?     表示查询字符串的开始   %3F

空格  空格                       %20

.       句号                       %2E

:       冒号                         %3A

url中的特殊字符问题

在 使用url进行参数传递时,经常会传递一些中文名(或含有特殊字符)的参数或URL地址,在后台处理时会发生转换错误。在有些传递页面使用GB2312, 而在接收页面使用UTF8,这样接收到的参数就可能会与原来发生不一致。使用服务器端的urlEncode函数编码的URL,与使用客户端 javascript的encodeURI函数编码的URL,结果就不一样。

2,JavaScript 对URL编码

javascript对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

【1】escape() 方法:采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符 在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +

【2】encodeURI()方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + ‘

【3】encodeURIComponent() 方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( )

因 此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用 escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者 encodeURIComponent。

另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。

1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。

例如:<script language="javascript">document.write(‘<a href="http://passport.baidu.com/?logout&aid=7&u=‘+encodeURIComponent("http://cang.baidu.com/bruce42")+‘">退出</a>‘);</script>

2、 进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、 js使用数据时可以使用escape

例如:搜藏中history纪录。

4、 escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。

最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,‘,(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ‘,(,),*,-,.,_,~,0-9,a-z,A-Z

时间: 2024-12-15 21:51:03

HTTP转义字符的相关文章

python格式化字符及转义字符

 Python格式化字符串的替代符以及含义     符   号     说     明       %c  格式化字符及其ASCII码       %s  格式化字符串       %d  格式化整数       %u  格式化无符号整型       %o  格式化无符号八进制数       %x  格式化无符号十六进制数       %X  格式化无符号十六进制数(大写)       %f  格式化浮点数字,可指定小数点后的精度       %e  用科学计数法格式化浮点数       %E

转义字符

字符表 所有的转义字符和所对应的意义: 转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将当前位置移到下一行开头 010 \r 回车(CR) ,将当前位置移到本行开头 013 \t 水平制表(HT) (跳到下一个TAB位置) 009 \v 垂直制表(VT) 011 \\ 代表一个反斜线字符''\' 092 \' 代表一个单引号(撇号)字符 039

shell变量的替换,命令的替换,转义字符

1,shell变量的替换 变量可以根据变量是否为空或者被删除,而被替换为特定的值 ${var}  变量本来的值 $(var:-word)   如果变量为空,或者已被删除那么返回word,但是不改变var的值 name="xiaoming" echo "xiaoming 's age is ${age:-12}" ech   "age = ${age}" >>>>>>>> xiaoming 's ag

PHP——转义字符

链接:百度-转义字符 http://baike.baidu.com/link?url=obfdOqATx4TO0Ev_kFnPz37wwW3SDhFPsvNobVTidhFuCn2zK5VmCuW1LU0HAVwc9ahkfVZzctwNtkOHvQX-jK

格式符与转义字符

C语言常用的格式符如下: 格式符 功能 %o 以不带符号的八进制形式输出整数 %x 以不带符号的十六进制形式输出整数 %u 以不带符号十进制形式输出整数 %d 以带符号的十进制形式输出整数 (但正数不输出正号+) %i 以带符号的十进制形式输出整数 (但正数不输出正号+) ,老式写法,与%d等价 %c 输出一个字符  %s 输出一个或多个字符  %f 以小数形式输出单.双精度数,默认输出6位小数  %e 以标准指数形式(即科学计数法)输出单.双精度数,数字部分小数位数默认为6位         

C# url转义字符

在web开发中通过(?)方式在浏览器地址栏传值时,浏览器是通过“&”来区分参数个数及取值的,比如: http://localhost/default.aspx?param1=10&5 &param2=20 假如说,我想取值param1中的10和5,然而因为&这个转义字符的存在,会导致参数接受错误. 针对于转义字符,可以这样理解: 1. 它是一种特殊的字符常量,一般是用'\'加数字(8进制)来表示: 2. 它主要用于表示一般字符不便于表示的控制代码,且用于消除紧随其后的字符的

[java学习笔记]java语言基础概述之转义字符&amp;break&amp;continue

1.转义字符 \t:制表符 \n:回车 \b:退格 \r:回车 \":双引号 \\:反斜线(常用于文件路径的书写中)   windows系统中回车符其实是由两个符号组成的,\r\n linux系统中回车符是\n 2.break&continue break(跳出)语句:应用范围是选择结构(switch语句)和循环结构 continue(继续)语句:应用于循环结构 注意: 这两个语句离开应用范围是没有意义的,编译会报错. 这两个语句单独存在下面都不可以有语句,因为执行不到.一般使用if判断

Java 转义字符

1.八进制转义序列:\ + 1到3位5数字:范围'\000'~'\377'      \0:空字符2.Unicode转义字符:\u + 四个十六进制数字:0~65535       \u0000:空字符3.特殊字符:就3个      \" :双引号      \' :单引号      \\ :反斜线4.控制字符:5个  \' 单引号字符 \\ 反斜杠字符 \r 回车 \n 换行\f 走纸换页 \t 横向跳格 \b 退格 点的转义:. ==> u002E 美元符号的转义:$ ==> u

13. Powershell -- 引号和转义字符

Powershell 引号和转义字符 单引号:任何情况下都只表示引号内自身的字符. 输出: $a="World"<enter> 'Hello, $a' 结果: Hello, $a 双引号:允许进行变量代换和字符转义. 输出: $a="World"<enter> "Hello, $a" 结果:Hello, World 输出单引号,双引号 'I ''m $a ' 结果: I'm  $a $a="123" &

NSLog占位符、常见文件类型、转义字符

[Objective-C常见的文件类型] 文件类型 说明 .m OC源码文件 .h 头文件 .c C源码文件 .cc C++源码文件 .mm OC++源码文件 [转义字符] 字符 说明 \b 退格 \t 制表 \r 回车 \t 水平制表 \v 垂直制表 \\ 反斜杠 [Format占位符,常用的加粗斜线表示] 占位符 说明 %@ 格式化对象 %i 格式化整数,包含负数 %p 指针 %f 浮点数float %e 浮点数的科学计数法 %g 浮点数 %u 无符整形 unsigned int %hi 格