закодировать арабскую букву unichar в обычные буквы - PullRequest
0 голосов
/ 14 марта 2012

помогите мне закодировать арабские буквы unichar, которые есть в моем файле Alphabet.xml, в обычные арабские буквы. Например: закодируйте 0x0628 в обычный арабский ب (B). Я использовал:

    -(void)loadDataFromXML{

    NSString* path = [[NSBundle mainBundle] pathForResource: @"alphabet" ofType: @"xml"];
    NSData* data = [NSData dataWithContentsOfFile: path];
    NSXMLParser* parser = [[NSXMLParser alloc] initWithData: data];
    [parser setDelegate:self];
    [parser parse];
    [parser release];    
    }



    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict{

 if ([elementName isEqualToString:@"letter"]) {
       NSString* title = [attributeDict valueForKey:@"name"];     
       NSString * charcode  =[attributeDict valueForKey:@"charcode"];
       NSLog(@"%@",[NSString stringWithFormat:@"%C",charcode]);

      }
    }

Когда я NSLog, на нем печатаются китайские или что-то еще символы бла-бла-бла, которых я никогда раньше не видел. Но когда я просто помещаю кодированный в юникод символ, он преобразуется в обычную арабскую букву. Пожалуйста помоги!! (

 NSLog(@"%@",[NSString stringWithFormat:@"%C",0x0628]);

1 Ответ

1 голос
/ 14 марта 2012

Проблема в том, что ваш код:

NSLog(@"%@",[NSString stringWithFormat:@"%C", charcode]);

эквивалентен:

NSLog(@"%@",[NSString stringWithFormat:@"%C", @"0x0628"]);

, но stringWithFormat ожидает целое число 0x0628, а не строку @"0x0628".


Так что вам нужно конвертировать charcode перед его использованием.Вы можете добиться этого, используя следующий код:

uint charValue;
[[NSScanner scannerWithString:charcode] scanHexInt:&charValue];
NSLog(@"%@",[NSString stringWithFormat:@"%C", charValue]);

Наконец, обратите внимание, что вы можете просто зарегистрировать символ, не создавая промежуточную строку, используя:

NSLog(@"%C", charValue);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...