次の文字列があります...
NSString *googleSearchString = @"http://www.google.com/search?q=lyrics+%22Tænder+På+Dig%22+%22Jakob+Sveistrup%22";
アクセント付き文字があることに注意してください。それをURLに変えようとすると、返されたURLはnullです...
[NSURL URLWithString:googleSearchString];
そのため、文字列にアクセントのない英語以外の文字がある場合を除いて、通常はURLが機能します。それを処理する方法について何か助けはありますか?
正しく機能させるには、特殊文字をエスケープする必要があります。何かのようなもの:
[NSURL URLWithString:[googlSearchString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
使用Swift 2.2
エスケープ非英語文字の場合、例:URLリクエストを行う 行う:
let urlPath = path.URLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
ここでurlPath
はOptional
であり、path
は元のURL(英語以外の文字が含まれるURL)です
これをSwift 4に使用します。
let url = myURLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let myURL = URL(string: url)
2k16メソッドstringByAddingPercentEscapesUsingEncoding:
は非推奨であり、これを正しくエスケープする方法はありません。 URLが事前に定義されている場合、stringByAddingPercentEncodingWithAllowedCharacters:
メソッドはURL全体をエスケープできません。