Как решить проблему с нераспознанным спецсимволом на Ipad / Iphone? - PullRequest
1 голос
/ 19 ноября 2011

Я работаю над приложением, которое получает кучу описаний через xml, а затем после разбора выводит их на экран.У меня проблема с некоторыми описаниями, когда апострофы превращаются в вопросительные знаки.Я имею в виду, что они начинаются в xml, на экране вывода и в базе данных, из которой я получаю их как апостроф, но затем они отображаются в приложении как знак вопроса.Это не всегда происходит, но каждый раз с одинаковыми описаниями.Вот пример:

Это то, что находится в xml / database

But it won't be easy. 
After a tour of the house, you'll be 

Это то, что отображается в приложении:

But it won?t be easy. 
After a tour of the house, you?ll be

Я довольноуверен, что проблема в том, что ipad / iphone не распознает символ, который он получает ... но я понятия не имею, как бы я его исправить.Вот мой код Parser: я считаю, что xml отправляется в кодировке UTF - 8.

[whereToGetXML appendFormat:xmlID];
NSURL *URL=[[NSURL alloc] initWithString:whereToGetXML];


NSData *dataFromServer = [[NSData alloc] initWithContentsOfURL:URL];  
NSLog(@"where to get xml is:%@", whereToGetXML);
// Do any additional setup after loading the view from its nib.
NSData *dataWithoutStringTag = [[NSData alloc]init];


NSXMLParser *firstParser = [[NSXMLParser alloc] initWithData: dataFromServer];
[firstParser setDelegate:self];
[firstParser parse];

//Convert the returned parsed string to data using dataUsingEncoding method. HAVE TO HAVE allowLossyConversion:YES or else it will crash on half of the states. 

dataWithoutStringTag =[tempParserString dataUsingEncoding: NSASCIIStringEncoding allowLossyConversion:YES];

NSString *htmlCode = [[NSString alloc] initWithData:dataWithoutStringTag encoding:NSASCIIStringEncoding];
NSMutableString *temp = [NSMutableString stringWithString:htmlCode];


NSData *finalData = [temp dataUsingEncoding:NSASCIIStringEncoding     allowLossyConversion:YES];

NSXMLParser* parser = [[NSXMLParser alloc] initWithData:finalData];
// NSLog(@"Data is:  %@", dataWithoutStringTag);
//NSXMLParser* parser = [[NSXMLParser alloc] initWithData: dataFromServer];

[parser setDelegate: self];
//[parser setShouldResolveExternalEntities:YES];
[parser parse];
[parser release];

1 Ответ

0 голосов
/ 19 ноября 2011

Возможно, потому что строка не экранирована.

Попробуйте добавить обратную косую черту перед каждой кавычкой.

\'message\'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...