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)