字符串中的代码的Unicode字符(Obj-C)

时间:2012-01-30 11:11:41

标签: iphone objective-c unicode

我在NSString中有一个unicode十六进制值 - 如何输出该字符;这就是我所拥有的:

NSLog(@"\U0001D000");

NSMutableString *hexString = [[NSMutableString alloc] initWithString:@"0001D000"];
[hexString insertString:@"\\U" atIndex:0];
NSLog(@"%@", hexString);

第一个NSLog输出字符;第二个只生成输出“\ U0001D000”

我尝试了很多组合而且不知所措 - 例如,我试过

NSLog(@"\U%@", hexString);

但这会产生编译器错误,因为它在\ U

之后寻找一串数字

1 个答案:

答案 0 :(得分:4)

如果您的角色需要代理对(U + 10000到U + 10FFFF),请使用CFStringGetSurrogatePairForLongCharacter将Unicode代码点转换为UTF-16代理对,然后-initWithCharacters:length:进行转换进入NSString。例如:

UniChar c[2];
CFStringGetSurrogatePairForLongCharacter(0x1D000, c);
NSString *s = [[NSString alloc] initWithCharacters:c length:2];

对于其他字符(CFStringGetSurrogatePairForLongCharacter返回FALSE),您可以跳过转换并直接转到-initWithCharacters:length: