web-dev-qa-db-ja.com

NSURL URLWithString:英語以外のアクセント付き文字を含むnullです

次の文字列があります...

NSString *googleSearchString = @"http://www.google.com/search?q=lyrics+%22Tænder+På+Dig%22+%22Jakob+Sveistrup%22";

アクセント付き文字があることに注意してください。それをURLに変えようとすると、返されたURLはnullです...

[NSURL URLWithString:googleSearchString];

そのため、文字列にアクセントのない英語以外の文字がある場合を除いて、通常はURLが機能します。それを処理する方法について何か助けはありますか?

51
regulus6633

正しく機能させるには、特殊文字をエスケープする必要があります。何かのようなもの:

[NSURL URLWithString:[googlSearchString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
70
clee

使用Swift 2.2

エスケープ非英語文字の場合、例:URLリクエストを行う 行う:

let urlPath = path.URLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

ここでurlPathOptionalであり、pathは元のURL(英語以外の文字が含まれるURL)です

7
Hugo Alonso

これをSwift 4に使用します。

let url = myURLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let myURL = URL(string: url)
5
Maksim Kniazev

2k16メソッドstringByAddingPercentEscapesUsingEncoding:は非推奨であり、これを正しくエスケープする方法はありません。 URLが事前に定義されている場合、stringByAddingPercentEncodingWithAllowedCharacters:メソッドはURL全体をエスケープできません。

0