Ios 将表情符号从JSON字符串转换为字符
我正在尝试将表情符号编码字符串从JSON字符串转换为字符。有些表情符号正在转换,有些则没有 我正在使用的函数:Ios 将表情符号从JSON字符串转换为字符,ios,swift,swift4,emoji,Ios,Swift,Swift4,Emoji,我正在尝试将表情符号编码字符串从JSON字符串转换为字符。有些表情符号正在转换,有些则没有 我正在使用的函数: extension String { var decodeEmoji: String? { let data = self.data(using: String.Encoding.utf8) let decodedStr = NSString(data: data!, encoding: String.Encoding.nonLossyASCII.rawValue)
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解码器(JSONDecoder、JSONSerialization)都会自动处理……
String.Encoding.nonlossySASCII.rawValue
-为什么是ASCII?@Vinodh,在中编辑的Swift版本看起来根本不像Objective C版本。如果你想展示你的想法,你应该把它贴在你自己的答案上。这不是我的主意。答案中提到了@Alexey Kudlay提到的内容。请阅读,然后开始责骂me@Vinodh,是的,他提到了另一个答案作为链接,但您的编辑将两个完全不同的代码段标记为ObjC和Swift版本的答案。它们不是版本,而是两种不同的解决方案!并且可以用目标C和Swift表示。请还原原始版本answer@Vinodh我试过了,但没有得到同行的认可。