как экранировать строку для UIWebView? - PullRequest
2 голосов
/ 26 марта 2011

Я получаю данные JSON с сервера.Он содержит словарь с текстом, который я вставляю в HTML-шаблон.

Как правильно экранировать эту строку?

NSString* json = /* can be anything, but also garbage */
NSString* json_escaped = [json someEscapeMethod]; ///////  HOW TO ESCAPE THIS ?
NSString* script = [NSString stringWithFormat:@"process('%@')", json_escaped];
NSString* result = [self.webView stringByEvaluatingJavaScriptFromString:script];

В настоящее время мне это нравится, но я не уверен, достаточно ли экранирования

NSString* json_escaped = [json stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"];

Ответы [ 2 ]

6 голосов
/ 27 марта 2011

Я сейчас кодирую его таким образом, но накладные расходы огромны.

NSString* json = /* can be anything, but also garbage */
NSString* json_escaped = [json stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* script = [NSString stringWithFormat:@"process('%@')", json_escaped];
NSString* result = [self.webView stringByEvaluatingJavaScriptFromString:script];

И расшифруйте его в javascript, как это

function process(json_escaped) {
  var json = decodeURIComponent(json_escaped);
  alert('json: ' + json.toString());
}

Я все еще ищу лучшее решение с меньшими накладными расходами.

Обновление

Я недавно узнал, что существует несколько каркасов для соединения target-c с javascript.

0 голосов
/ 27 марта 2011

Может работать секция «Экранирующие символы в строке» NSRegularExpression .

...