请帮助我将我在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]);
答案 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);