hac*_*ker 4 uitextview uilabel ios emoji
我试图在各种项目中显示一个字符串,如UIlabel,UItextview,Uitextfield等......我试图这样做的方式是这样的
NSData *data1 = [title dataUsingEncoding:NSUTF8StringEncoding];
NSString *goodValue = [[NSString alloc] initWithData:data1 encoding:NSNonLossyASCIIStringEncoding];
label.text=goodvalue;
Run Code Online (Sandbox Code Playgroud)
这对我来说有时很有用,但有时它会为这样的字符串返回null "Youtube\ud83d\ude27\ud83d\ude2e\ud83d\ude2f\ud83d".可以有人引导我这个吗?
表情符号字符在unicode平面1中,因此需要超过16位来表示代码点.因此,两个UTF8表示或一个UTF32表示.Unicode实际上是一个21位系统,对于平面0字符(基本上除表情符号之外的所有东西)16位就足够了,我们可以使用16位.表情符号需要超过16位.
"Youtube\ud83d\ude27\ud83d\ude2e\ud83d\ude2f\ud83d".无效,它是utf16 unicode转义字符串的一部分,最后\ud83d是表情符号的1/2.
此外,为了创建一个带有转义字符"\"的文字字符串,必须转义转义字符:"\\".
NSString *emojiEscaped = @"Youtube\\ud83d\\ude27\\ud83d\\ude2e\\ud83d\\ude2f";
NSData *emojiData = [emojiEscaped dataUsingEncoding:NSUTF8StringEncoding];
NSString *emojiString = [[NSString alloc] initWithData:emojiData encoding:NSNonLossyASCIIStringEncoding];
NSLog(@"emojiString: %@", emojiString);
Run Code Online (Sandbox Code Playgroud)
NSLog输出:
表情符号:Youtube
表情符号字符串也可以用utf32表示:
NSString *string = @"\U0001f627\U0001f62e\U0001f62f";
NSLog(@"string: %@", string);
Run Code Online (Sandbox Code Playgroud)
NSLog输出:
STRING1:
| 归档时间: |
|
| 查看次数: |
10567 次 |
| 最近记录: |