2009-09-06 6 views
1

JSON 결과를 가져 와서 개체를 표 셀로 구문 분석하는 응용 프로그램을 작성하고 있습니다. 공상적인 것은 아니지만 내 결과에서 많은 용어/이름은 유럽어로 è 또는 ú와 같은 문자가 \ u00E9 또는 \ u00FA로 나옵니다. 나는 이것들이 ASCII라고 생각한다? 또는 유니 코드? (나는 결코 staight를 유지할 수 없다). 어쨌든, 모든 좋은 NSSTring 's처럼, 나는 이것을 고치는 방법이 있어야한다고 생각했다. 그러나 나는 그것을 발견하지 않고있다. ... 어떤 생각? 나는 이와 같은 일을 피하려고 노력하고있다 : this posting. 모두에게 감사드립니다.JSON 결과의 유럽 문자 서식 지정

+1

유니 코드. 기억하는 데 도움이된다면 이스케이프 코드에서 "u"를보십시오. 또한 ASCII는 0-127이므로 0xFA는 이미 ASCII 외부에 있습니다. – u0b34a0f6ae

+0

문자열 자체를 이스케이프 처리하지 않고, 기존의 Objective-C 기반 JSON 라이브러리를 사용하여 깨끗한 API를 사용하여 이러한 종류의 문제를 처리 할 생각인가? Google의 첫 번째 히트 (예 : http://code.google.com/p/json-framework/)를 사용하면 다음과 같은 작업을 수행 할 수 있습니다. NSDictionary * dict = [myStringContainingJSONData JSONValue]; 및 주 응용 프로그램 소스는 형식 문제를 구문 분석하거나 인코딩 할 필요가 없습니다. –

+0

감사합니다 크리스토퍼,이 프레임 워크를 사용하고 있지만 답변이 아닙니다. – mlecho

답변

1

, 이러한 유니 코드 문자입니다가. 그리고 당신이 사용할 수있는 NSString 메서드는 + stringWithContentsOfURL입니다. 또는 + stringWithContentsOfFile. 예 :

NSError *error; 
NSString *incoming = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://sender.org"] encoding:NSUnicodeStringEncoding error:&error]; 
0

그래서 유니 코드 이스케이프 시퀀스에 대해 이야기하고 있습니다. 문자 코드 일 뿐이며 printf 스타일 '% C'을 사용하여 변환 할 수 있습니다.

NSScanner 아마이 작업을 수행하는 좋은 방법이 될 것입니다 ... 여기 (EW)에서 균열의 : kaizer.se 지적

NSString* my_json = @"{\"key\": \"value with \\u03b2\"}"; 
NSMutableString* clean_json = [NSMutableString string]; 
NSScanner* scanner = [NSScanner scannerWithString: my_json]; 
NSString* buf = nil; 
while (! [scanner isAtEnd]) { 
    if (! [scanner scanUpToString: @"\\u" intoString: &buf]) 
     break;//no more characters to scan 
    [clean_json appendString: buf]; 
    if ([scanner isAtEnd]) 
     break;//reached end with this scan 
    [scanner setScanLocation: [scanner scanLocation] + 2];//skip the '\\u' 
    unsigned c; 
    if ([scanner scanHexInt: c]) 
     [clean_json appendFormat: @"%C", c]; 
    else 
     [clean_json appendString: @"\\u"];//nm 
} 
// 'clean_json' is now a string with unicode escape sequences 'fixed'