URL编码和HTML编码NSStrings

Mus*_*afa 9 iphone encoding urlencode nsstring html-entities

他们是一种编码/解码HTML和URL的方法(在Xcode中,使用Objective-C)?

[NSString stringWithContentsOfFile:<#(NSString *)path#> encoding:<#(NSStringEncoding)enc#> error:<#(NSError **)error#>]
Run Code Online (Sandbox Code Playgroud)

这似乎不符合我的预期.我认为它会将像"<"这样的特殊字符转换为等效的HTML实体,在这种情况下是"<".

以下是与该主题相关的w3school链接的参考(一般):

HTML URL编码参考

HTML实体参考

感谢期待.

zap*_*aph 19

使用给定的编码返回接收器的表示,以确定将接收器转换为合法URL字符串所需的转义百分比.

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

返回通过在接收器中将所有百分比转义替换为由给定编码确定的匹配字符而生成的新字符串.

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


Bre*_*don 11

您引用的方法使用给定的字符编码(例如UTF-8或ASCII)从磁盘读取文件.它与URL或HTML转义无关.

如果要添加URL百分比转义,则需要以下方法:

[myString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
Run Code Online (Sandbox Code Playgroud)

请务必阅读有关此方法的文档,因为它有一些细微之处,包括它逃脱的内容以及它单独留下的内容.在某些情况下,您可能必须使用更复杂但更灵活的CFURLCreateStringByAddingPercentEscapes().(如果你这样做,请注意你可以施放CFStringRef,NSString *反之亦然.)

我知道没有内置的XML/HTML风格的实体转义,但是这个函数应该处理基础知识:

NSString * convertToXMLEntities(NSString * myString) {
    NSMutableString * temp = [myString mutableCopy];

    [temp replaceOccurrencesOfString:@"&"
                          withString:@"&amp;"
                             options:0
                               range:NSMakeRange(0, [temp length])];
    [temp replaceOccurrencesOfString:@"<"
                          withString:@"&lt;"
                             options:0
                               range:NSMakeRange(0, [temp length])];
    [temp replaceOccurrencesOfString:@">"
                          withString:@"&gt;"
                             options:0
                               range:NSMakeRange(0, [temp length])];
    [temp replaceOccurrencesOfString:@"\""
                          withString:@"&quot;"
                             options:0
                               range:NSMakeRange(0, [temp length])];
    [temp replaceOccurrencesOfString:@"'"
                          withString:@"&apos;"
                             options:0
                               range:NSMakeRange(0, [temp length])];

    return [temp autorelease];
}
Run Code Online (Sandbox Code Playgroud)

  • 哇,你的代码看起来像一个正式的法国花园. (8认同)