0
첫째, 내가 왜이 일을하고있어 간단한 설명 :이스케이프 분음 부호
내가 XML에서 문자열을로드하고, 기존의 자바 스크립트와 상호 작용이 사용하고를 기능. 나는 webview의 stringByEvaluatingJavaScriptFromString 메서드를 사용하고 있기 때문에 그들을 탈출해야한다.
나는이 이스케이프 기능을 사용하고 있습니다 : 그것은 분음 부호를 제외하고 잘 작동
- (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];
}
. 예를 들어, "é"는 "Ã ©"로 표시됩니다.
따라서 발음 구별을 어떻게 피할 수 있습니까?
굉장! 고맙습니다. – michael
특정 UTF-8 헤드 바이트가 특별한 케이싱 (special-casing)의 요점은 무엇인지 모르겠습니다. 이스케이프가 필요한 ASCII 바이트를 특수한 경우에만 사용하고 높은 바이트를 바이트로 처리 할 때 UTF-8을 무시하십시오. 물론 이들의 유효성 검사를 원할 수도 있지만,이 경우에는이 대답보다 더 많은 (그리고 다른) 논리가 필요합니다. –