iOS 处理HTML转义 “&#” 和 “&#x” 开头

前言:

在接入一款国外的聊天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("&#20013&#22269&#xff0c深圳银&#x884C")
print(text)

打印如下:
中国,深圳银行

感谢以下文章:
&#x开头的是什么编码呢。浏览器可以解释它。如中国等同与中文"中国"?
以&#x开头的字符序列代表什么意思
&#x开头的是什么编码?

结语

搜了很多,我以为那是个编码。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容