我在NSString中有一个unicode十六进制值 - 如何输出该字符;这就是我所拥有的:
NSLog(@"\U0001D000");
NSMutableString *hexString = [[NSMutableString alloc] initWithString:@"0001D000"];
[hexString insertString:@"\\U" atIndex:0];
NSLog(@"%@", hexString);
第一个NSLog输出字符;第二个只生成输出“\ U0001D000”
我尝试了很多组合而且不知所措 - 例如,我试过
NSLog(@"\U%@", hexString);
但这会产生编译器错误,因为它在\ U
之后寻找一串数字答案 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:
。