在Swift中,我使用解码HTML NSAttributedString,如下所示:
NSAttributedString
let encodedString = "Phải công nhận rằng kể từ lúc ông Thăng làm bộ trưởng" let encodedData = encodedString.dataUsingEncoding(NSUTF8StringEncoding) let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] let attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, error: nil) let decodedString = attributedString.string println(decodedString)
但是结果是这样的:
摆脱水坝»数十个»贸易促进»™返回
真实结果必须与 encodedString
encodedString
这种方法有什么问题?
您必须在文档选项中指定使用的字符 编码 :
let encodedString = "Phải công nhận rằng kể từ lúc ông Thăng làm bộ trưởng" let encodedData = encodedString.data(using: .utf8)! let attributedOptions : [NSAttributedString.DocumentReadingOptionKey : Any ] = [ .documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue ] do { let attributedString = try NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil) let decodedString = attributedString.string print(decodedString) } catch { // error ... } // Output: Phải công nhận rằng kể từ lúc ông Thăng làm bộ trưởng
(已为Swift 4更新)