web-dev-qa-db-ja.com

URLパーセントエンコーディングを削除/デコードするにはどうすればよいですか?

urlを取得して、より多くの読み取り可能形式に変換したい。たとえば、次のリンクがあります。

http://en.wikipedia.org/wiki/S%C3%A1ndor_Font

不要な部分を取り除き、"S%C3%A1ndor_Font"NSStringとして残しました。これを"Sándor Font"(実際にはどうあるべきか)に変換する方法はありますか。特殊文字のすべての組み合わせを入力し、文字列の各部分を置き換える必要はありませんか?

これをどのように使用したいかを示すために、次のサンプルコードを書きました。

   //request is a NSURLRequest with a url of http://en.wikipedia.org/wiki/S%C3%A1ndor_Font

    NSRange range = [[request.URL absoluteString] rangeOfString:@"/wiki/"];

    NSString *substring = [[[request.URL absoluteString] substringFromIndex:NSMaxRange(range)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

    //ArticleTitleLabel is a UILabel

    self.ArticleTitleLabel.text = substring;

結局、ラベルに"Sándor Font"ではなく"S%C3%A1ndor_Font"と書いてほしい。ありがとう!

19
user2844801

NSStringの- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding;が必要です。

つまり.

[substring stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
38
Josh The Geek

IOS10/Swift 3の場合:

substring.removingPercentEncoding

IOS9/Swift 2.3の場合:

substring.stringByRemovingPercentEncoding

35
Frankie

Swift

str.removingPercentEncoding
12
quemeful

Swift 4.2(Linuxサポート)

let percentString = "hello%20world"
let string = NSString(string: percentString).removingPercentEncoding!
print(string) // hello world
4
Sergey Di