编码阿拉伯语字母unichar到普通字母

时间:2012-03-14 11:19:26

标签: objective-c unicode

请帮助我将我在Alphabet.xml文件中的unichar阿拉伯字母编码为常规阿拉伯字母。例如:将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时,它打印中文或某些我从未见过的等等。但是当我把unicode编码的char下面转换成普通的阿拉伯字母时。请帮忙!! :(

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

1 个答案:

答案 0 :(得分:1)

问题在于您的代码:

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