UILabel不显示表情符号。

4

我遇到了一个在UILabel中显示表情符号的问题。 我从网络服务获取这些数据(我无法更改获取数据的方式): 这个值是来自调试器:

__NSCFString *  @"emoji \\ud83d\\ude1b\\ud83d\\ude1d"   0x000000017405ea80 

NSLog输出的数值:

emoji \ud83d\ude1b\ud83d\ude1d

如果我将这个值赋给我的UILabel文本属性,我会在屏幕上看到:

emoji \ud83d\ude1b\ud83d\ude1d

我尝试使用以下方法对字符串进行编码和解码:

NSData *data = [string dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *dataValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return dataValue;

当我尝试时:

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
NSString *output = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding];

我可以在屏幕上看到表情符号,但如果一个字符串中没有表情符号,它将为空并在设备上显示空标签。

我无法使其正常工作。

感谢任何帮助。

2个回答

1
我尝试了你的代码,第二个...它完美地工作了:
这是我的代码:

enter image description here

和输出:

enter image description here

移除表情符号字符串\\ud83d\\ude1b\\ud83d\\ude1d,只保留emoji。 这是在模拟器上使用的,我想知道为什么错误只出现在设备上?而在模拟器上它却可以正常工作?


谢谢,但是为什么当没有表情符号时,字符串会变成nil? - Mike Morris
@MikeMorris,对我来说它不是nil。我不知道在你的情况下是什么原因导致了这个问题,尝试查看这个讨论可能与你的问题有关...但我不认为你的字符串是非ASCII字符...嗯...我相信你的问题是不同的。 - 0yeoj

0

尝试使用以下代码设置您的UILabel

//Example
[NSString stringWithUTF8String:"\ud83d"]

不,谢谢您的支持。我关闭问题,然后存储字符串值,如果是表情符号字符串,我使用存储的值。 - Mike Morris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接