将表情符号从 JSON 字符串转换为字符
Converting emoji from JSON string to character
我正在尝试将表情符号编码字符串从 JSON 转换为字符 string.Some 表情符号正在转换,有些则没有。
我正在使用的功能:
extension String {
var decodeEmoji: String? {
let data = self.data(using: String.Encoding.utf8)
let decodedStr = NSString(data: data!, encoding: String.Encoding.nonLossyASCII.rawValue)
if decodedStr != nil {
return decodedStr as String?
}
return self
}
}
JSON string: Altre novità in arrivo oggi... \ud83d\udcaa\ud83c\udffb
"\ud83d\udcaa\ud83c\udffb
"为表情符号字符串。
查看此 或者您可以使用 NSAttributedString
来表达情绪
NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
例如,为 UILabel
创建扩展
@implementation UILabel (Emotion)
- (void)setHtmlText:(NSString *)text
{
self.text = text;
NSDictionary *attributes = [self.attributedText attributesAtIndex:0 longestEffectiveRange:nil inRange:NSMakeRange(0, self.attributedText.length)];
NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithData:[text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
[attrStr addAttributes:attributes range:NSMakeRange(0, attrStr.length)];
self.attributedText = attrStr;
}
@end
我正在尝试将表情符号编码字符串从 JSON 转换为字符 string.Some 表情符号正在转换,有些则没有。
我正在使用的功能:
extension String {
var decodeEmoji: String? {
let data = self.data(using: String.Encoding.utf8)
let decodedStr = NSString(data: data!, encoding: String.Encoding.nonLossyASCII.rawValue)
if decodedStr != nil {
return decodedStr as String?
}
return self
}
}
JSON string: Altre novità in arrivo oggi... \ud83d\udcaa\ud83c\udffb
"\ud83d\udcaa\ud83c\udffb
"为表情符号字符串。
查看此 NSAttributedString
NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
例如,为 UILabel
@implementation UILabel (Emotion)
- (void)setHtmlText:(NSString *)text
{
self.text = text;
NSDictionary *attributes = [self.attributedText attributesAtIndex:0 longestEffectiveRange:nil inRange:NSMakeRange(0, self.attributedText.length)];
NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithData:[text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
[attrStr addAttributes:attributes range:NSMakeRange(0, attrStr.length)];
self.attributedText = attrStr;
}
@end