Swift la codificación UTF8 y no de caracteres UTF8

Tengo un poco de texto desde archivo json. En este texto he aplicado UTF8 codificar pero este codificador de no reconocer a un no estándar carácter àèìòù y es la capital de char, hay un método para purificar mi cadena?

Mi función:

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
}
  • Lo byte de salida es String dando? ¿Qué se puede esperar? También no estoy seguro de su inserción de los caracteres no estándar en StackOverflow fueron correctamente.
  • Por favor, mostrar un (breve) de la cadena de entrada demostrar el problema, junto con la salida real y la salida esperada.
InformationsquelleAutor luca carboni | 2015-01-08

1 Kommentar

  1. 5

    He encontrado una solución.

    La UTF8 tomar de 8 bits de la tabla ASCII, y el UTF16 tomar 16 bits tabla ASCII, la solución es sencilla mediante la modificación de mis funciones:

    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
    }
    • Sí, esto funciona, pero yo todavía no sé por qué dataUsingEncoding no es capaz de identificar el personaje que la usa UTF8StringEncoding. En mi caso, he comprobado mi se almacena el archivo como UTF-8, por lo que encodedData debe contener el contenido correcto, mi conjetura es que NSAttributedString utiliza la codificación UTF-16, después de todo esa es la única codificación apoyado por NSString, la documentación no está claro acerca de esto, sin embargo.
    • Yo tenía el mismo problema y funcionó debe ser debido a NSAttributedString. La documentación nunca especifique en qué codificación del parámetro data debe tener, pero creo que hemos verificado que DEBE ser NSUTF16StringEncoding. Internamente probablemente decodificar con eso.
    • La base de NSString se representa usando UTF-16, por lo que por defecto tendría sentido. Dicho esto, usted puede especificar options: [characterEncoding: NSUTF8StringEncoding] para que coincida con los datos entrantes.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea