在objective-c中的urldecode

Chr*_*ris 27 iphone objective-c

我正在处理objective-c中的urlencoded字符串.是否存在实际反转urlENCODING的基础功能?

收到的字符串如下:K%FChlschrank但应该在解码Kühlschrank之后

Bad*_*ate 61

我做了一个快速类别来帮助解决这个问题:)

@interface NSString (stringByDecodingURLFormat)
- (NSString *)stringByDecodingURLFormat;
@end

@implementation NSString
- (NSString *)stringByDecodingURLFormat
{
    NSString *result = [(NSString *)self stringByReplacingOccurrencesOfString:@"+" withString:@" "];
    result = [result stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    return result;
}
@end
Run Code Online (Sandbox Code Playgroud)

一旦定义,这可以快速处理编码的字符串:

NSString *decodedString = [myString stringByDecodingURLFormat];
Run Code Online (Sandbox Code Playgroud)

还有很多其他方法可以实现.

  • 我相信NSString结果,实际上应该是NSString*结果. (2认同)

Jes*_*her 16

我相信这就是你要找的东西:

- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Run Code Online (Sandbox Code Playgroud)

返回值:

通过在接收器中替换由给定编码确定的匹配字符的所有百分比转义而产生的新字符串.nil如果转换不可能,它将返回,例如,百分比转义使得字节序列在编码中不合法.

[source: Apple NSString Class Reference]
Run Code Online (Sandbox Code Playgroud)

  • 在执行百分比转义替换之前,您还需要将"+"替换为""(空格)*. (2认同)

lee*_*lee 6

- (NSString *)URLDecode:(NSString *)stringToDecode
{
    NSString *result = [stringToDecode stringByReplacingOccurrencesOfString:@"+" withString:@" "];
    result = [result stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    return result;
}
Run Code Online (Sandbox Code Playgroud)

而已


Avi*_*vin 6

stringByReplacingPercentEscapesUsingEncoding: 自iOS9起,Apple已弃用。请使用stringByRemovingPercentEncoding

新方法通过使用匹配的UTF-8字符替换所有百分比编码的序列,来返回由接收器生成的新字符串。

例:

NSString *encodedLink = @"hello%20world";
NSString *decodedUrl = [encodedLink stringByRemovingPercentEncoding];
NSLog (@"%@", decodedUrl);
Run Code Online (Sandbox Code Playgroud)

输出:

hello world
Run Code Online (Sandbox Code Playgroud)