2013-02-21 4 views

답변

3

내 원래 대답했다 :

사용 [NSString stringByReplacingOccurrencesOfString:withString:] (reference).

NSString *string = @"\U0420\U043e\U0437\U044b"; 
NSString *converted = [string stringByReplacingOccurrencesOfString:@"\\" 
                 withString:@"\\\\\\"]; 

지금 바로 \ 문자가 실제로 string에 존재하지 않습니다 주어진 사용자들은 생각하지 않는다 그러나

; 대신 컴파일러는 각 시퀀스를 유니 코드 문자로 변환합니다. 이 같은 string 인코딩해야합니다

NSString *string = @"\\U0420\\U043e\\U0437\\U044b"; 

위의 코드를 사용하려면. 나는 이것에 대한 대안을 볼 수 없다.

추가 업데이트 : 이와 같은 질문을 자주 접했을 때 문자열 리터럴과 문자열 데이터 사이에 혼란이있었습니다. 귀하의 질문에 그 컴파일러가 유니 코드 문자 (\Uxxx 단일 문자에 대한 유니 코드 이스케이프 시퀀스)로 변환 할 것입니다 그 \ 문자가 나타나지 않습니다. 그러나 런타임에 이와 같은 문자열을 제공하면 (텍스트 파일에서 읽음) 해당 문자 인 \이 존재하므로 위의 코드를 사용할 수 있습니다.

+0

을 수정했지만 json이 "\ U0420 \ U043e \ U0437 \ U044b"로 제공하고 러시아 문자로 변환해야하므로이 작업을 수행 할 수 없습니다. 그러나이 방법으로 문자열을 얻어 "\\ U0420 \\ U043e \\ U0437 \\ U044b '(더블 슬래시) – Asike

+0

@Asike 난 [[문자열 cStringUsingEncoding : NSUTF8StringEncoding] 부호화 NSNonLossyASCIIStringEncoding는 NSString stringWithCString]로 변환하려고 JSON이 그 문자열을 어떻게 제공하는지 확인하는 방법은 무엇입니까? 슬래시 문자가 문자열에 실제로 존재하면 단순히 슬래시를 추가하는 것 이상의 작업을 수행해야합니다. 나는 또한'stringWithCString'이 당신이 원하는 것을 할 수 있을지 의심 스럽다. – trojanfoe

+0

그것은 NSJSONSerialization으로 뭔가를 할 필요가 있지만, 어쨌든 고맙습니다. – Asike

관련 문제