0

我得到一个从服务器到图像的链接已经编码所以它带有 %20 但有时我得到一个包含希伯来字符的代码,所以我需要做 Encoding agian ,使用上面的代码:

但是在我的编码之后,我得到回应 % 20 更改为 % 2520

static CFStringRef charsToEscape = CFSTR("&=");

    + (NSString *)escapeStringByAddingPercentEscapes: (NSString*) string {

        return [(NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                                                    (CFStringRef)string,
                                                                    NULL,
                                                                    charsToEscape,
                                                                    CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)) autorelease];
    }

我试图像这样将 % 添加到 charsToEscape :

静态 CFStringRef charsToEscape = CFSTR("&=%");

但它没有帮助。

谢谢

4

2 回答 2

2
NSString *urlString = @"----YOUR URL HERE----";
[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlString];
于 2013-04-08T08:19:49.627 回答
1

如果我没有在链接中得到希伯来语字符,你的想法很好。

但我找到了解决方案,我只是在参数 legalURLCharactersToBeEscaped 中发送了 %

现在我在这样的函数中使用:

static CFStringRef charsToEscape = CFSTR("&=");
static CFStringRef charsUnchanged = CFSTR("%");

    + (NSString *)escapeStringByAddingPercentEscapes: (NSString*) string {

        return [(NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                                                    (CFStringRef)string,
                                                                    charsUnchanged,
                                                                    charsToEscape,
                                                                    CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)) autorelease];
    } 

谢谢

于 2013-04-09T07:48:01.180 回答