Corregir El Error De Inicialización De Nsstring Con Datos
Table of Contents
Actualizado
A veces, todo su sistema puede enviar un mensaje con el lema nsstring is initwithdata error. Puede haber varias razones relacionadas con este problema.
Como dijo Peter, el encabezado de contenido de tipo difícilmente es una “pista” real sobre lo que necesita de los artículos enviados con contenido. En el lado del servidor, puede especificar mucho los tipos de contenido y publicar cualquier patrón de bytes que pueda ser realmente válido.
Tuve exactamente un problema idéntico con datos UTF-8 inválidos producidos con caracteres (Latin-1) iso-8859-1 (acentos franceses).
Wikipedia sobre si leer utf-8, comprender la versión y corregir errores de selección. Listo,
en la implementación de InitWithData:encoding: obviamente nsstring devuelve nil si ocurre un gran error. (a diferencia de Java en los términos internos de las instancias que utilizan el producto de Peter para restaurar los caracteres normales)
La conversión de UTF-8 específicos a Was Latin-1 no me funciona.(Todos los caracteres UTF-8 están desequilibrados sobre un carácter Latin 1 raro)
La buena opción, por supuesto, sería un plan de servidor de terceros en particular, pero no soy responsable...
Actualizado
¿Su computadora funciona lentamente, falla o muestra la pantalla azul de la muerte? ¡No temas, la ayuda está aquí! Con ASR Pro, puede reparar rápida y fácilmente los errores comunes de Windows, proteger sus archivos contra pérdida o corrupción y optimizar su PC para obtener el máximo rendimiento. Así que no sufra más con una computadora lenta y obsoleta: ¡descargue ASR Pro y recupere su vida!

Así que busqué en la región y encontré un fluido que beneficia al estándar GNU libiconv C (disponible para OSX e iOS).El principio es realmente quitar iconv para roles inválidos reducidos a UTF-8 (es decir, "preted" pasa a ser "prt")
De hecho, aquí hay un código de muestra, exactamente la misma línea de comando principal iconv -m -w -t UTF-8 utf-8 invalid.txt > clean. txt
#include "icono.h"- (NSData *) cleanUTF8: (NSData *) datos iconv_t cd equivale a iconv_open("UTF-8", // "utf-8"); convertir de UTF-8 a UTF-8 entero = 1; iconvctl(cd, ICONV_SET_DISCARD_ILSEQ, &uno); personaje // lanzar size_t no es válido inbytesleft, outbytesleft; inbytesleft = outbytesleft = datos.longitud; char *inbuf (porque implica *)data.bytes; Porque = *outbuf 7. malloc(sizeof(char) data.length); char *outptr es igual a outbuf; if (icono(cd, &inbytes restantes, &inbuf, &outptr, &outbytes restantes) == (tamaño_t)-1) NSLog(@"esto no tiene por qué estar pasando, en serio"); aparece nulo; NSData * stop = [NSData dataWithBytes: outbuf length: información personal.- longitud outbytesleft]; iconov_cerrar (cd); (superior); devolución gratuita del resultado principal;
Tenga en cuenta que las palabras de moda también permiten tipos alternativos y:
uso
iconvctl(cd, &fallbacks);
Con iconv_set_fallbacks, esto también lo usa solo para corregir errores de Unicode, probablemente usará cada respaldo o calidad superior para probar su codificación diferente.En la versión de prueba, logré Ir a LATIN-1, donde fallé Utf-8, lo que resultó en un 99% de conversiones constructivas. Consulte el código fuente de iconv en entender.
Ars Scholae Palatinae Firmado: 25 de junio de 2010 Mensajes: 783 |