Objective-C 中文網址的編碼及解碼 (url encode and decode)

Url Encode & Decode

在 iOS 中要送一段網址給 WebView 開啟,當網址含有中文時,會發生 WebView 一直 loading 而無法開啟網頁的狀況,例如如下的一段網址:
http://tw.news.yahoo.com/麵包魂東京吸睛-粉絲包圍導演-061222049.html
解決方法是將網址編碼即可。

解決方法

要對網址編碼很容易,Objective-C 貼心的都幫你做好了,只要利用 NSString 提供的方法即可。
  • stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding :會將網址以 UTF-8 來編碼。
  • stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding :會將被編碼的文字以 UTF-8 解碼。
(Objective-C 的方法名稱都超長的)

以下程式碼示範將原始網址編碼再解碼:
NSString *url = @"http://tw.news.yahoo.com/麵包魂東京吸睛-粉絲包圍導演-061222049.html";
    NSLog(@"url: %@", url);
    
    NSString *encodeUrl = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"encode url: %@", encodeUrl);
    
    NSString *decodeUrl = [encodeUrl stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"decode url: %@", decodeUrl);
結果如下:
url: http://tw.news.yahoo.com/麵包魂東京吸睛-粉絲包圍導演-061222049.html

encode url: http://tw.news.yahoo.com/%E9%BA%B5%E5%8C%85%E9%AD%82%E6%9D%B1%E4%BA%AC%E5%90%B8%E7%9D%9B-%E7%B2%89%E7%B5%B2%E5%8C%85%E5%9C%8D%E5%B0%8E%E6%BC%94-061222049.html

decode url: http://tw.news.yahoo.com/麵包魂東京吸睛-粉絲包圍導演-061222049.html
本文網址:http://blog.tonycube.com/2012/10/iosurl-encode-and-decode.html
Tony Blog 撰寫,轉載時請註明出處及文章連結,謝謝 😀

我要留言

留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。