2015-01-08 5 views
1

У меня есть текст из json-файла, в этом тексте я применил кодировку utf8, но этот кодер не распознает нестандартный символ àèìòù и его символ капитала, существует способ очистить ma string? здесь моя функБыстрое кодирование UTF8 и символ не UTF8

func stringToUTF8String (stringaDaConvertire stringa: String) -> String { 

let encodedData = stringa.dataUsingEncoding(NSUTF8StringEncoding)! 
let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] 
let attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, error: nil)! 
//println(attributedString.string) 
return attributedString.string 

}

+0

Какой байт-вывод «String» дает вам? Что бы вы ожидали? Также я не уверен, что ваша вставка нестандартного символа в StackOverflow прошла правильно. – Tommy

+0

Просьба показать (короткую) строку ввода, демонстрирующую проблему, вместе с фактическим результатом и ожидаемым выходом. –

ответ

4

я нашел решение Thank, в utf8 принять 8bit таблицы ASCII, а utf16 принять 16bit таблицу ASCII, решение просто по необходимости модифицировать мой FUNC в

func stringToUTF16String (stringaDaConvertire stringa: String) -> String { 

let encodedData = stringa.dataUsingEncoding(NSUTF16StringEncoding)! 
let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] 
let attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, error: nil)! 
//println(attributedString.string) 
return attributedString.string 
} 

простого объявлении функционального

+1

Да, это работает, но я до сих пор не знаю, почему dataUsingEncoding не может идентифицировать символ, используя UTF8StringEncoding. В моем случае я подтвердил, что мой файл хранится как UTF-8, поэтому 'encodedData' должен содержать нужное содержимое, я предполагаю, что NSAttributedString использует кодировку UTF-16, после всего, что это единственная кодировка, поддерживаемая NSString, документация неясно об этом. –

+0

У меня была такая же проблема, и она выработалась из-за 'NSAttributedString'. В документации никогда не указывается, какую кодировку должен иметь параметр 'data', но я считаю, что мы ДОЛЖНЫ быть' NSUTF16StringEncoding'. Внутренне они, вероятно, расшифровываются с этим. – samwize

+0

Основополагающий 'NSString' представлен с использованием UTF-16, поэтому значение по умолчанию имеет смысл. При этом вы можете указать 'options: [characterEncoding: NSUTF8StringEncoding]' для соответствия входящим данным. – ctietze

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