Если вам нужно решение, которое будет работать с расширенными символами ASCII (например, латинскими символами) и / или юникодом, вы можете использовать это:
- (NSString*) escapeStringForJavascript:(NSString*)input
{
NSMutableString* ret = [NSMutableString string];
int i;
for (i = 0; i < input.length; i++)
{
unichar c = [input characterAtIndex:i];
if (c == '\\')
{
// escape backslash
[ret appendFormat:@"\\\\"];
}
else if (c == '"')
{
// escape double quotes
[ret appendFormat:@"\\\""];
}
else if (c >= 0x20 && c <= 0x7E)
{
// if it is a printable ASCII character (other than \ and "), append directly
[ret appendFormat:@"%c", c];
}
else
{
// if it is not printable standard ASCII, append as a unicode escape sequence
[ret appendFormat:@"\\u%04X", c];
}
}
return ret;
}
Я не знаю, как это происходит с кодовыми точкамивыше этого представимого unichar.Похоже, что такие символы также не могут быть представлены в javascript.