Во-первых, краткое объяснение, почему я делаю это:
Я загружаю строки из XML и использую их для взаимодействия с существующими функциями JavaScript. Мне нужно избегать их, только потому, что я использую метод stringByEvaluatingJavaScriptFromString в веб-представлении.
Я использую эту escape-функцию:
- (NSString *) stringByEscapingMetacharacters
{
const char *UTF8Input = [self UTF8String];
char *UTF8Output = [[NSMutableData dataWithLength:strlen(UTF8Input) * 4 + 1 /* Worst case */] mutableBytes];
char ch, *och = UTF8Output;
while ((ch = *UTF8Input++))
if (ch == '\'' || ch == '\'' || ch == '\\' || ch == '"')
{
*och++ = '\\';
*och++ = ch;
}
else if (isascii(ch))
och = vis(och, ch, VIS_NL | VIS_TAB | VIS_CSTYLE, *UTF8Input);
else
och+= sprintf(och, "\\%03hho", ch);
return [NSString stringWithUTF8String:UTF8Output];
}
Работает нормально, кроме диакритических знаков. Например, «é» отображается как «Ã ©»
Итак, как мне избежать диакритики?