html - Swift HTML 解码问题

标签 html ios swift

在 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ải công nhận rằng kể từ lúc ông Thăng làm bộ 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.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 进行了更新)

关于html - Swift HTML 解码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52245768/

相关文章:

macos - 如何使用 swift 在 Xcode OS X 中使文本区域透明

ios - subview 按钮不起​​作用

html - 导航栏的下拉值应显示该值并呈现在文本上方

javascript - jQuery - 试图让一个函数与多个相同的类、div 一起工作

html - 有条件地改变颜色的 css 类

ios - 在 Xcode 6 中使用私有(private)框架 "could not inspect application package"的应用程序。缺少框架 info.plist

ios - NSXMLParser 不读取所有元素

html - 2014年纽扣效果趋势

ios - 缺少推送通知授权 iOS 应用程序提交(我不使用它)

swift - 在 macOS 的状态栏应用程序上创建窗口