2011年9月11日 星期日

URL含有中文的處理方法

最近嘗試使用objective-c 2.0撰寫程式去呼叫google places api。
使用ASIHTTPRequest這個套件去呼叫api位址。

https://maps.googleapis.com/maps/api/place/search/json?location=25.04842,121.51707&radius=1000&language=zh-TW&name=餐廳&sensor=false&key=*****************************

假設要在台北車站附近找餐廳,在未經處理之前作法是:

NSString *requestURL = [[NSString alloc] initWithFormat: @"https://maps.googleapis.com/maps/api/place/search/json?location=%@&radius=%@&language=%@&name=%@&sensor=%@&key=%@",location ,radius, language, name, sensor, key, nil];

這樣會導致bad url

escape之後:

NSString *requestURL = [[[NSString alloc] initWithFormat: @"https://maps.googleapis.com/maps/api/place/search/json?location=%@&radius=%@&language=%@&name=%@&sensor=%@&key=%@",location ,radius, language, name, sensor, key, nil] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

就能夠正常運作了

google問題過程中找到的code,先記一下連結位址,以後可能有用
http://freequartz.googlecode.com/svn/trunk/CoreFoundation/CFStringEncodingExt.h

沒有留言:

張貼留言