在Swift中,我使用NSAttributedString解码HTML,见下文:
let encodedString = "Phải công nhận rằng kể từ lúc ông Thănglà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)
但结果是这样的:
Phải công nháºn rằng kể từ lúc ông ThăngÂlÃm bá»™
trưởng
真实结果必须与encodedString相同
这种方法有什么问题?
您必须在文档选项中指定使用的字符编码:
原文链接:https://www.f2er.com/swift/319894.htmllet 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 : [String : AnyObject ] = [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding ] // <- ADDED let attributedString = NSAttributedString(data: encodedData,error: nil)! let decodedString = attributedString.string println(decodedString) // Output: Phải công nhận rằng kể từ lúc ông Thăng làm bộ trưởng
请注意,我必须插入两个解包操作符!使用Xcode 6.1.1进行编译.
您可能希望使用可选绑定检查结果.
(针对Swift 1.2更新)