Проблема формата NSString - PullRequest
       16

Проблема формата NSString

9 голосов
/ 19 сентября 2011

Я работаю с Google Place API и получил успешный ответ JSON. Но один NSString есть L\U00c3\U00b6wenbr\U00c3\U00a4u Keller. Я хочу преобразовать его в правильный NSString как Lowenbrau Keller. Как я могу сделать это преобразование?

Ответы [ 3 ]

4 голосов
/ 19 сентября 2011

Правильный формат - использовать строчные буквы u для обозначения Юникода в Coocoa:

Неправильно:

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

Правильно:

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

Чтобы правильно печатать, замените\ u00 с \ x

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

Вывод NSLog: строка3: 'Löwenbräu Keller'

1 голос
/ 19 сентября 2011

ИСПЫТАННЫЙ КОД: 100% РАБОТАЕТ

Примечание:

\ U и \ u не одно и то же. Экранирование \ U ожидает 8 (шестнадцатеричных) цифр вместо 4.

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



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

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

ВЫВОД:

outputString : LA¶wenbrA¤u Keller
0 голосов
/ 19 сентября 2011

Вы можете использовать его следующим образом.

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]];

Надеюсь, он будет вам полезен и покажет точную строку.

Приветствие.

...