2012-11-29 3 views
1

나는 구문을 바꿔서 http://maps.google.com/maps/geo?q=48.209946,11.539421&output=csv입니다. 응답은 200,8, "Lerchenstraße 66, 80995 Munich, Germany"입니다. CityName 즉 'Lerchenstraße 66'만 표시합니다. 그러나 문제는 CityName 문자열에 유니 코드 문자가 있으며보기에 "Lerchenstra \ U00dfe66"처럼 표시된다는 것입니다. 출력은 "Lerchenstrasse"또는 "Lerchenstraße"와 같아야합니다.NSString에서 unicode 문자를 제거/바꾸기/표시하는 방법

-(void) httpDataDidFinishLoadingWithData:(NSData *)theData { 
    m_activityLoaded=NO; 
    temp=[[NSString alloc] initWithData:[dataLoader httpData] encoding:NSUTF8StringEncoding]; 
    NSArray *listItems = [temp componentsSeparatedByString:@","]; 
    NSArray *tempCountryArray = [[listItems objectAtIndex:[listItems count]-3] componentsSeparatedByString:@"\""]; 
    NSString *string = [NSString stringWithFormat:@"%@", tempCountryArray]; 
    NSString *strTe=[[[[string 
    stringByReplacingOccurrencesOfString:@"(" withString:@""] 
    stringByReplacingOccurrencesOfString:@")" withString:@""] 
    stringByReplacingOccurrencesOfString:@" " withString:@""] 
    stringByReplacingOccurrencesOfString:@"\"" withString:@"" ]; 
    self.cityNameString = strTe; 
    NSLog(@"CITY NAME IS : %@", strTe); 
} 

도와주세요. 미리 감사드립니다.

+0

인코딩 된 것처럼 보이고, [NSString stringWithUTF8String :'을 사용하여 해독하십시오. – iDev

+0

plz gimme in detail – Joker

+0

"Lerchenstrabe"를 의미 하시겠습니까? 아니면 Lerchenstraße입니까? (b 대 날카로운 s) –

답변

-1

나는 대답을 얻었다. 지원과 제안에 감사드립니다. 코드는 다음과 같습니다.

NSString* esc1 = [strTe stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"]; 
NSString* esc2 = [esc1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; 
NSString* quoted = [[@"\"" stringByAppendingString:esc2] stringByAppendingString:@"\""]; 
NSData* data = [quoted dataUsingEncoding:NSUTF8StringEncoding]; 
NSString* unesc = [NSPropertyListSerialization propertyListFromData:data 
    mutabilityOption:NSPropertyListImmutable format:NULL 
    errorDescription:NULL]; 
assert([unesc isKindOfClass:[NSString class]]); 
NSLog(@"Output = %@", unesc); 

출력은 "Lerchenstraße66"입니다.

+1

Google 서버가 이스케이프 처리되지 않은 UTF8 문자열을 보냅니다. 앱에서'[dataLoader httpData]'(또는'strTe')가 이스케이프 처리 된 것 같습니다. 따라서이 픽스는 들어오는 데이터의 잘못된 처리를 숨 깁니다. –

+0

유용한 정보를 제공해 주셔서 감사합니다. – Joker

관련 문제