problema no formato NSString

9

Estou trabalhando com a API do Google Place e obtive uma resposta JSON bem-sucedida. Mas um NSString é L\U00c3\U00b6wenbr\U00c3\U00a4u Keller . Eu quero convertê-lo em um bom NSString como Lowenbrau Keller . Como posso fazer essa conversão?

    
por Nikunj Jadav 19.09.2011 в 15:15
fonte

3 respostas

4

O formato correto é usar um u minúsculo para denotar unicode no Coocoa:

Errado:

NSString *string1 = @"L\U00c3\U00b6wenbr\U00c3\U00a4u Keller";

Correto:

NSString *string2 = @"L\u00c3\u00b6wenbr\u00c3\u00a4u Keller";

Para imprimir corretamente, substitua \ u00 por \ x

NSString *string3 = @"L\xc3\xb6wenbr\xc3\xa4u Keller";
NSLog(@"string3: '%@'", string4);

Saída do NSLog: string3: 'Löwenbräu Keller'

    
por zaph 19.09.2011 / 15:39
fonte
1

TESTED CODE: 100% WORKS

NOTA:

\ U e \ u não são a mesma coisa. O escape \ U espera 8 dígitos (hexadecimais) em vez de 4.

NSString *inputString =@"L\u00c3\u00b6wenbr\u00c3\u00a4u Keller";



NSString *outputString=[[NSString stringWithFormat:@"%@",inputString] stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:[NSLocale currentLocale]];

NSLog(@"outputString : %@ \n\n",outputString);

OUTPUT:

outputString : LA¶wenbrA¤u Keller
    
por Vijay-Apple-Dev.blogspot.com 19.09.2011 / 15:45
fonte
0

Você pode usá-lo da seguinte maneira.

NSString * localStr = @ "L \ U00c3 \ U00b6wenbr \ U00c3 \ U00a4u Keller";

localStr = [localStr stringByReplacingOccurrencesOfString:@"'" withString:@"'"];
localStr = [localStr stringByReplacingOccurrencesOfString:@" " withString:@" "];
localStr = [localStr stringByReplacingOccurrencesOfString:@""" withString:@"'"];
localStr = [localStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
localStr = [localStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

Espero que seja útil para você e exiba a sequência exata.

Felicidades.

    
por Nishant B 19.09.2011 / 16:12
fonte