iOS URL中含有中文和轉義字元時的處理
今天發現一個蛋疼的問題,服務端返回的urlString裡面有時含有中文,使用
[NSURLURLWithString:urlString]生成URL物件時,iOS客戶端不能正確進行網路請求,網上找到的URLEncode方法又不能完全解決問題.
方法1:
NSString* encodedString = [urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
方法2:
NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)urlString,NULL,NULL,kCFStringEncodingUTF8);
這兩種方法當urlString裡含有中文時URL編碼是正確的,但是如果其中含有已轉義的%等符號時,又會再次轉義而導致錯誤.
檢視方法2引數說明:
CFStringRefCFURLCreateStringByAddingPercentEscapes(CFAllocatorRefallocator, CFStringRef originalString, CFStringRefcharactersToLeaveUnescaped, CFStringReflegalURLCharactersToBeEscaped, CFStringEncoding encoding);
因此做出修改,寫出方法:
NSString *encodedString = (NSString *)
CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)urlString,
(CFStringRef)@"!$&'()*+,-./:;[email protected]_~%#[]",
NULL
kCFStringEncodingUTF8);
如果在所有的類裡都要用到這個方法,可以寫成category,然後在標頭檔案import "NSString+URL.h" 即可呼叫.
NSString+URL.h 檔案
- @interface NSString (URL)
- - (NSString *)URLEncodedString;
- @end
- #import "NSString+URL.h"
- @implementation NSString (URL)
- - (NSString *)URLEncodedString
- {
- NSString *encodedString = (NSString *)
- CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
- (CFStringRef)self,
- (CFStringRef)@"!$&'()*+,-./:;[email protected]_~%#[]",
- NULL,
- kCFStringEncodingUTF8);
- return encodedString;
- }
- @end
呼叫方法:
NSString *encodedString = [urlString URLEncodedString];
//encodedString do something
本文轉載自:http://blog.csdn.net/typingios/article/details/9136005
相關推薦
iOS URL中含有中文和轉義字元時的處理
今天發現一個蛋疼的問題,服務端返回的urlString裡面有時含有中文,使用 [NSURLURLWithString:urlString]生成URL物件時,iOS客戶端不能正確進行網路請求,網上找到的URLEncode方法又不能完全解決問題. 方法1: NSS
JAVA反射使用例項和class.getResource()得到URL中含有中文和空格亂碼問題
JAVA反射使用例項 package invoke; import java.lang.reflect.Method; public class T1 { public static void main(String[] args) throws Exception {
ios url中含有中文問題
1 使用 stringByAddingPercentEncodingWithAllowedCharacters 例如:使用方法 NSURL *url = [NSURL URLWithString:[valueString stringByAddingPerc
ios-day21-01(對URL中的中文或特殊字元新增百分號轉義、把經過百分號轉義的URL還原)
NSString *urlStr = [NSString stringWithFormat:@"http://localhost/login.php?username=張三&password=1234"]; // 如果URL中包含中文字串或者特殊字元(例如空格),需要給URL新增百分號轉義
使用httpclient下載圖片時,url中含有中文字元,導致下載失敗的解決方法
先說解決方法吧: 修改tomcat的server.xml檔案,在Connector標籤中加上URLEncoding引數 <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThre
url中含有中文路徑時訪問出現404問題
pat find() 訪問 col pub 文字 str static color /** * URL中文字符編碼轉換 * @param url 含中文字符的URL * @return */ public static String getC
ios url中帶中文的解決方案
蒐集資料整理後得出解決方法: 一,使用NSString的方法: NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; //這個方法在
在js中對中文和特殊字元轉碼,js轉碼(轉載)
js對文字進行編碼涉及3個函式:escape,encodeURI,encodeURIComponent,相應3個解碼函式:unescape,decodeURI,decodeURIComponent1、 傳遞引數時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字元截斷。
SpringMVC @PathVariable 中含有中文和點號
Spring MVC從3.0開始支援REST,而主要就是通過@PathVariable來處理請求引數和路徑的對映。 由於考慮到SEO的緣故,很多人喜歡把新聞的名稱作為路徑中的一部分去處理,這時候中文的名稱就會遇到問題,沒辦法對映,這個是因為編碼問題,只要到 TOMCAT/
在js中對中文和特殊字元轉碼,js轉碼
js對文字進行編碼涉及3個函式:escape,encodeURI,encodeURIComponent,相應3個解碼函式:unescape,decodeURI,decodeURIComponent1、 傳遞引數時需要使用encodeURIComponent,這樣組合的u
PHP URL中包含中文,查看時提示404
not pla 再次 ros index oca 參考 utf cnblogs 使用Microsoft Web Platform在IIS裏配置安裝一個wordpress,一切順利。 當添加一片文章時,自動生成URL類似如下: http://localhost/wordp
Android開發中請求URL中引數含有中文和空格的解決方法
在做安卓應用時,碰到要處理URL請求的中文引數,我們需要用到URLEncoder.encode(引數,"utf-8")方法對中文引數進行編碼,這樣做,能夠解決大多數中文引數的亂碼問題,當然編碼方式不一定是“utf-8”,這取決於你伺服器端的編碼格式。 但是,若是請求引數中不
對 url 中含有的中文進行轉碼操作
www 勘誤 utili reason main letter ins 兩個 int 對 url 中含有的中文進行轉碼操作 一般情況下,將帶有中文的 url 拷貝到開發工具,開發工具都會有相應的轉碼(自動轉碼), 現在大部分的瀏覽器也可以對含有中文的 url 進行轉碼(自
URL中的保留和不安全字元
******************************************************************* 書寫URL時要使用US-ASCII字符集可以顯示的字元。 http://www.google.com 如果需要在URL中使用不屬於
PHP中的單引號、雙引號和轉義字元詳解
PHP單引號及雙引號均可以修飾字符串型別的資料,如果修飾的字串中含有變數(例$name);最大的區別是: 雙引號會替換變數的值,而單引號會把它當做字串輸出。 轉義字元,顧名思義會將規定的語法用"\"來輸出。但語法規定在不同的系統中轉義字元的作用不同,例如:windows下的回車換行符用"\r"或"
php中的單引號、雙引號和轉義字元
在PHP中,可以使用 echo() 和 print() 語句傳送資料到Web瀏覽器,也可以使用它們傳送HTML 程式碼到Web瀏覽器。從技術上講,echo() 和 print() 是語言構造,而不是函式,這裡用了一對括號,從而有助於與變數以及PHP的其他部分割槽分開。這兩個語句本質上沒有什麼區別,因此用那
java對URL中含有的特殊字元"&"的處理
1、問題描述:最近在做java匯出檔案到excel專案中遇到請求的URL包含引數&的時候,匯出的檔案裡面內容為空,什麼都沒有。 2、問題排查:首先我檢視專案執行的日誌,發現打印出來的錯誤資訊是空指標異常java.lang.NullPointException.然後發
get請求時候引數中含有“中文”欄位出現亂碼問題的原因和解決方法
關於使用get請求時候,在傳遞的引數中有中文字元時候出現亂碼問題的原因 1.伺服器:伺服器按照預設的iso-8859-1進行解碼。 A、post方式 post方式屬於表單提交,引數存在於請求體中,只需要如下配置即可。 request.setCharacterEncoding
Android URL中關於中文特殊字元的編碼
http://fengchj.com/?p=1940 還有一個文章“陳年老坑之 URL Encoding”也是這方面的文章:https://blog.jamespan.me/2015/05/17/url-encoding URL中的空格有時候被編碼成%20,有時候被
拼接url有中文和特殊字元
中文和特殊字元 蘋果自帶的方法是解不了的—–需要自己去控制,以下是程式碼 - (NSString *)encodeToPercentEscapeString: (NSString *)