首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ios -动态创建和显示unicode字符串

ios -动态创建和显示unicode字符串
EN

Stack Overflow用户
提问于 2014-07-23 14:20:26
回答 2查看 968关注 0票数 0

我有一个UILabel,我想在其中显示一个Unicode字符。以下工作:

代码语言:javascript
运行
复制
label.text = @"\U000025A0";

现在,我想动态地从十进制数字生成Unicode字符,如下所示:

代码语言:javascript
运行
复制
label.text = NSString stringWithFormat:@"\U%08x",9632];

Xcode编译器出现以下错误时失败:

代码语言:javascript
运行
复制
\U used with no following hex digits

是否有方法将十进制数字9632转换为Unicode,然后在UILabel中显示它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-23 14:45:01

我也有同样的问题来显示entypo特殊字符,所以我实现了我自己的EntypoStringCreator类(在so的一些帮助下)。下面是将unicode编号转换为nsstring的方法:

.h

代码语言:javascript
运行
复制
@interface EntypoStringCreator : NSObject

+(NSString *)stringForIcon:(UTF32Char)char32;

@end

.m

代码语言:javascript
运行
复制
@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
票数 1
EN

Stack Overflow用户

发布于 2014-07-23 14:27:17

试一试:

代码语言:javascript
运行
复制
NSString *myString = [NSString stringWithUTF8String:"0xF09F948A"]; <-- UTF-8 Hexadecimal Encoding

myLabel.text = myString;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24913046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档