如何为UIWebView转义字符串?

时间:2011-03-26 20:36:57

标签: json ios uiwebview nsstring escaping

我从服务器中提取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 个答案:

答案 0 :(得分:6)

我现在用这种方式编码,但开销很大。

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());
}

我仍在寻找一种更好的解决方案,而且开销更少。

更新

我最近了解到,使用javascript存在多个用于桥接objective-c的frameworks

答案 1 :(得分:0)

NSRegularExpression中的“字符串中的转义字符”部分可能有效。