【问题标题】:How to display the emoji and special characters in UIlabel and UItextviews?如何在 UIlabel 和 UItextview 中显示表情符号和特殊字符?
【发布时间】:2014-07-17 13:44:33
【问题描述】:

我正在尝试在 UIlabel、UItextview、Uitextfield 等各种项目中显示字符串.....我正在尝试以这样的方式这样做

NSData *data1 = [title dataUsingEncoding:NSUTF8StringEncoding];
NSString *goodValue = [[NSString alloc] initWithData:data1 encoding:NSNonLossyASCIIStringEncoding];
label.text=goodvalue;

这有时对我有用,但有时它会为 "Youtube\ud83d\ude27\ud83d\ude2e\ud83d\ude2f\ud83d" 这样的字符串返回 null。有人可以指导我吗?

【问题讨论】:

  • @Zaph 是的,而不是 \ud83d 我想将其显示为表情符号..
  • 来自 json 服务的@Zaph..
  • 不..它只是我们输入并发送到服务器的内容。那只是返回..
  • 这就像拔牙,一次只提供一点信息。比如你输入了什么,转义的 unicode 或表情符号?如果您想要一个答案,请使用您所做的所有信息和问题的所有信息重新格式化问题。

标签: ios uilabel uitextview emoji


【解决方案1】:

表情符号字符位于 unicode 平面 1 中,因此需要超过 16 位来表示代码点。因此,两种 UTF8 表示或一种 UTF32 表示。 Unicode 实际上是一个 21 位系统,对于平面 0 字符(基本上除了表情符号之外的所有字符),16 位就足够了,我们使用 16 位来获得。表情符号需要超过 16 位。

"Youtube\ud83d\ude27\ud83d\ude2e\ud83d\ude2f\ud83d"。无效,它是 utf16 unicode 转义字符串的一部分,最后一个 \ud83d 是 emoji 字符的 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);

NSLog 输出:

emojiString: Youtube???

emoji字符串也可以用utf32表示:

NSString *string = @"\U0001f627\U0001f62e\U0001f62f";
NSLog(@"string: %@", string);

NSLog 输出:

字符串 1:???

【讨论】:

  • 字符串错误有两个原因。首先是你需要字符串中的“\”字符,所以你必须使用双反斜杠字符,第一个转义第二个,[dataUsingEncoding:dataUsingEncoding:NSUTF8StringEncoding]。其次,但不是致命的,是最后一个“\ud83d”是表情符号字符的 1/2,非致命因为它被忽略了。
  • string=[string stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];这个呢?
  • 如果您收到的字符串中应该已经包含“\”,那么只有当您输入文字表示时,您才需要加倍“\”。
  • 在 utf8 (utf8mb4) 中,??? 是十六进制 F09F98A7F09F98AEF09F98AF
  • 如何快速实现这一目标?
【解决方案2】:
NSString *str = @"Happy to help you \U0001F431";

NSData *data = [str dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *valueUnicode = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];


NSData *dataa = [valueUnicode dataUsingEncoding:NSUTF8StringEncoding];
NSString *valueEmoj = [[NSString alloc] initWithData:dataa encoding:NSNonLossyASCIIStringEncoding];

_lbl.text = valueEmoj;

【讨论】:

  • 这对我来说适用于粘贴到 xcode 字符串文字中的表情符号
猜你喜欢
  • 2019-04-22
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 2020-10-11
  • 2015-09-12
  • 1970-01-01
  • 2014-02-28
  • 2016-02-22
相关资源
最近更新 更多