當網址中含有中文字符時咱們沒法直接使用,須要把網址的字符串編碼後再轉爲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