当网址中含有中文字符时咱们没法直接使用,须要把网址的字符串编码后再转为URL。javascript
因为url支持26个英文字母、数字和少数几个特殊字符,所以,对于url中包含非标准url的字符时,就须要对其进行编码。php
iOS中提供了函数stringByAddingPercentEscapesUsingEncoding对中文和一些特殊字符进行编码,可是stringByAddingPercentEscapesUsingEncoding的功能并不完善,对一些较为特殊的字符无效。而对这些字符则可使用CFURLCreateStringByteAddingPercentEscapes函数,java
解码可使用函数- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encodingios
例:ajax
NSString* string1 = @"https://www.cloudsafe.com/文件夹";
NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* string3 = [string2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* string4 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* string5 = [string3 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* string6 = [string4 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* string7 = [string5 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
输出结果: string5 & 6 重复编码encode
string1:https://www.cloudsafe.com/文件夹
string2:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9
string3:https://www.cloudsafe.com/%25E6%2596%2587%25E4%25BB%25B6%25E5%25A4%25B9
string4:https://www.cloudsafe.com/文件夹
string5:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9
string6:https://www.cloudsafe.com/文件夹
string7:https://www.cloudsafe.com/文件夹编程
那么这些函数该怎么理解呢,escape的英语意思是逃逸,在这里为何用它?服务器
escape采用ISO Latin字符集对指定的字符串进行编码。全部的空格符、标点符号、特殊字符以及其余非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。编程语言
在不少脚本语言的应用当中,escape函数是一个可转换编码的函数,好比javascript 的 ajax 中,向a.php传递参数?city=北京,可先将"北京"用escape从新编码,再进行传递,在服务器端接收后再解码才不会出现乱码。escape通常用于传递URL参数和相似urlencode base64_encode函数是相似的。如上?city=北京函数
JAVA中escape()的使用编码
escape() 函数可对字符串进行编码,这样就能够在全部的计算机上读取该字符串。
escape(string)
参数 | 描述 |
---|---|
string | 必需。要被转义或编码的字符串。 |
已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其余全部的字符都会被转义序列替换。
提示:可使用 unescape() 对 escape() 编码的字符串进行解码。
注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。
在本例中,咱们将使用 escape() 来编码字符串:
<script type="text/javascript"> document.write(escape("Visit W3School!") + "<br />") document.write(escape("?!=()#%&")) </script>
输出:
Visit%20W3School%21
%3F%21%3D%28%29%23%25%26