中文字符的編碼轉換

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

ios的字符串編碼函數和JAVA類似,也許咱們沒學過JAVA,可是不得不認可其餘編程語言的思想有助於咱們的開發。程序語言都是相通的,把握住思想,咱們才能在程序的世界發揮最大的潛力。

相關文章
相關標籤/搜索