美文网首页
iOS 处理HTML转义 “&#” 和 “&#x” 开头

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

作者: Yuency | 来源:发表于2023-01-09 10:41 被阅读0次

前言:

在接入一款国外的聊天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开头的是什么编码?

结语

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

相关文章

网友评论

      本文标题:iOS 处理HTML转义 “&#” 和 “&#x” 开头

      本文链接:https://www.haomeiwen.com/subject/wlvpcdtx.html