我从API中获取了一个包含锚标记的字符串,因此我从中创建NSAttributedString
,并将其显示在UITextView
中,以便我可以支持可点击链接。
问题是传入的字符串不是有效的HTML,因此它中包含未转义的unicode字符。比如:
虽然我可以处理这些特定情况,但我担心任何其他的unicode字符,我目前还不知道。
示例:
NSString *fromAPI = @"Reagan \U2014 saying";
NSDictionary *options = @{NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType};
NSData *data = [fromAPI dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:data options:options documentAttributes:nil error:nil];
这在UITextView中呈现为:
如何让它正确渲染em破折号和其他unicode? p>
答案 0 :(得分:7)
发现它,看起来HTML不会渲染unicode,除非你将其添加到<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
答案 1 :(得分:-1)
我要建议的(如果我已正确理解了这个问题)是使用正则表达式或其他东西将转义字符\U0000FE0E
或仅\UFE0E
添加到所有未转义的unicode的末尾字符,例如:
NSString *fromAPI = @"Reagan \U2014 saying";
NSString *convertedFromAPI = @"Reagan \U2014\UFE0E saying";
但我认为你现在所做的事情更有意义。