2015-01-12 3 views
1

В Swift, я Декодирование HTML с использованием NSAttributedString, смотрите ниже:Swift HTML Декодирование Trouble

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Ạ£ я cÃ'ng nháºn rẠ± нг ká » ƒ Tá »«lúc Ã'ng Thăng là м bá»™ TRAE ° á» Yng

истинный результат должен быть таким же, с encodedString

Что не так в этом методе?

ответ

1

Вы должны указать используемую кодировку в настройках документа:

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 

Обратите внимание, что я должен был вставить два UnWrap операторы !, чтобы сделать его компиляции с Xcode 6.1.1. Вместо этого вы можете проверить результаты с необязательной привязкой.

(Обновлено для Swift 1.2)

+1

О, это нормально. Очень спасибо @Martin R. Но этот метод ДЕЙСТВИТЕЛЬНО медленный для длительного контента. Любые оптимизированные для этой же цели? – Sonrobby

+0

@Sonrobby: Вы можете использовать синтаксический анализатор XML для синтаксического анализа HTML, но у меня нет опыта в этом, поэтому я не могу ничего рекомендовать. Это может быть интересно, хотя оно написано в Objective-C: http://www.raywenderlich.com/14172/how-to-parse-html-on-ios. –

Смежные вопросы