前言:
在接入一款国外的聊天SDK的时候,在iOS代理(didReceive)里面收到的网页端发过来的消息的时候,发现一些中文的标点符号,比如逗号,问号,感叹号,是乱码,以&#x开头,得把这个东西正确显示出来。
代码地址:https://gitee.com/yuency/Autolayout
示例代码类名 【GarbledCcodeViewController】
上代码
Swift版本:
func htmlToString(_ htmlString: String) -> String {
do {
let attrText = try NSMutableAttributedString(data: (htmlString).data(using: String.Encoding.utf8, allowLossyConversion: true)!,
options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.html,
NSAttributedString.DocumentReadingOptionKey.characterEncoding:String.Encoding.utf8.rawValue],
documentAttributes: nil)
return attrText.string
} catch let error as NSError {
return "HTML 序列转义失败: \(error)"
}
}
OC版本:
- (NSString *)htmlToString:(NSString *)htmlString {
NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)};
NSData *data = [htmlString dataUsingEncoding:NSUTF8StringEncoding];
NSAttributedString *string = [[NSAttributedString alloc] initWithData:data options:options documentAttributes:nil error:nil];
return string.string;
}
使用:
let text = htmlToString("中国,深圳银行")
print(text)
打印如下:
中国,深圳银行
感谢以下文章:
&#x开头的是什么编码呢。浏览器可以解释它。如中国等同与中文"中国"?
以&#x开头的字符序列代表什么意思
&#x开头的是什么编码?
结语
搜了很多,我以为那是个编码。