我有一个UILabel
,我想在其中显示一个Unicode字符。以下工作:
label.text = @"\U000025A0";
现在,我想动态地从十进制数字生成Unicode字符,如下所示:
label.text = NSString stringWithFormat:@"\U%08x",9632];
Xcode编译器出现以下错误时失败:
\U used with no following hex digits
是否有方法将十进制数字9632转换为Unicode,然后在UILabel
中显示它?
发布于 2014-07-23 14:45:01
我也有同样的问题来显示entypo特殊字符,所以我实现了我自己的EntypoStringCreator
类(在so的一些帮助下)。下面是将unicode编号转换为nsstring的方法:
.h
@interface EntypoStringCreator : NSObject
+(NSString *)stringForIcon:(UTF32Char)char32;
@end
.m
@implementation EntypoStringCreator
+(NSString *)stringForIcon:(UTF32Char)char32
{
if ((char32 & 0xFFFF0000) != 0)
return [self stringFromUTF32Char:char32];
else
return [self stringFromUTF16Char:(UTF16Char)(char32&0xFFFF)];
}
+(NSString *)stringFromUTF32Char:(UTF32Char)char32
{
char32 -= 0x10000;
unichar highSurrogate = (unichar)(char32 >> 10); // leave the top 10 bits
highSurrogate += 0xD800;
unichar lowSurrogate = char32 & 0x3FF; // leave the low 10 bits
lowSurrogate += 0xDC00;
return [NSString stringWithCharacters:(unichar[]){highSurrogate, lowSurrogate} length:2];
}
+(NSString *)stringFromUTF16Char:(UTF16Char)char16
{
return [NSString stringWithCharacters:(unichar[]){char16} length:1];
}
@end
发布于 2014-07-23 14:27:17
试一试:
NSString *myString = [NSString stringWithUTF8String:"0xF09F948A"]; <-- UTF-8 Hexadecimal Encoding
myLabel.text = myString;
https://stackoverflow.com/questions/24913046
复制相似问题