Swift HTML解码的麻烦
在Swift中,我使用NSAttributedString
解码HTML,见下面:
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)
但结果是这样的:
PhảicÃ'ngnháºnngángngngástál«líºcÃngThánglámbá»™trưлÝng
真正的结果必须与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.dataUsingEncoding(NSUTF8StringEncoding)! let attributedOptions : [String : AnyObject ] = [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding ] // <- ADDED let attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, 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)