Кодирование URL и кодирование HTML NSStrings

@Domenic: Я не получаю его.. разве Вы не можете сделать этого с автосвойствами?:

public string Title { get; }

или

public string Title { get; private set; }

это, к чему Вы обращаетесь?

9
задан Brent Royal-Gordon 19 March 2013 в 05:48
поделиться

2 ответа

Возвращает представление получателя с использованием заданной кодировки для определения процента экранирования, необходимого для преобразования получателя в допустимую строку URL.

- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

и

Возвращает новую строку, созданную путем замены в получателе все проценты экранируются с совпадающими символами, как определено данной кодировкой.

- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
19
ответ дан 4 December 2019 в 06:35
поделиться

Метод, который вы цитируете, читает файл с диска с заданной кодировкой символов (например, UTF-8 или ASCII). Это не имеет ничего общего с экранированием URL или HTML.

Если вы хотите добавить экранирование процентов URL, вам нужен этот метод:

[myString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

Убедитесь, что вы прочитали документацию по этому методу, потому что есть определенные тонкости в том, от чего он ускользает, а что оставляет в покое. В некоторых случаях вам, возможно, придется использовать более сложную, но более гибкую, CFURLCreateStringByAddingPercentEscapes () . (Если вы это сделаете, обратите внимание, что вы можете преобразовать CFStringRef в NSString * и наоборот.)

Я не знаю ничего, что могло бы создать сущность в стиле XML / HTML. экранирование, но эта функция должна обрабатывать основы:

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

    [temp replaceOccurrencesOfString:@"&"
                          withString:@"&"
                             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];
}
11
ответ дан 4 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: