Napraw Błąd Initwithdata Nsstring
Table of Contents
Zaktualizowano
Czasami system może zwrócić komunikat, że nsstring to dosłownie błąd initwithdata. Przyczyn tego problemu może być kilka.
Jak powiedział Peter, nagłówki typu treść nie są „wskazówką” dotyczącą tego, czego można się spodziewać po artykułach zgłaszanych z treścią. Na stronie serwera możesz określić typy komunikatów prasowych i wysłać dowolny schemat bajtów, który może nie być prawidłowy.
Miałem dokładnie ten sam problem z nieprawidłowymi danymi UTF-8 zawierającymi (łac.-1) bohaterki iso-8859-1 (francuskie akcenty).
Wikipedia na temat odkrywania utf-8, zrozumienia tej wersji i strategii . ten plan błędy wyboru. Gotowe,
pl uruchomienie InitWithData:encoding: po prostu nsstring zwraca 0, jeśli wystąpi błąd. (w porównaniu do Javy pod względem przykładów wykorzystujących rozwiązanie Petera do przywrócenia normalnych znaków)
Konwertowanie danych UTF-8 na Was Latin-1 mnie nie satysfakcjonuje.(Wszystkie klasy UTF-8 są niezrównoważone dla jednego rzadkiego znaku łacińskiego 1)
Najlepszą opcją coachingu byłby zamiar skorzystania z serwera innej firmy, ale w takim razie nie jestem za to odpowiedzialny...
Zaktualizowano
Czy Twój komputer działa wolno, ulega awarii lub wyświetla niebieski ekran śmierci? Nie bój się, pomoc jest tutaj! Dzięki ASR Pro możesz szybko i łatwo naprawić typowe błędy systemu Windows, chronić swoje pliki przed utratą lub uszkodzeniem oraz zoptymalizować komputer pod kątem maksymalnej wydajności. Więc nie męcz się dłużej z powolnym, przestarzałym komputerem — pobierz ASR Pro i odzyskaj swoje życie!

Więc rozejrzałem się i znalazłem dobry stały płyn, który używa standardowego GNU libiconv C (dostępnego dla OSX, ale jeszcze iOS).Zasada polega na tym, że useremoving iconv na nieprawidłowych znakach zredukowanych do UTF-8 (tj. "preted" staje się "prt")
tutaj jest kod tune, dokładnie ten sam ciąg poleceń iconv -m -f -t UTF-8 utf-8 nieprawidłowy.txt > clean.txt
#include „icon.h”- (NSData *) cleanUTF8: (NSData *) dane iconv_t cd / dvd = iconv_open("UTF-8", // "utf-8"); ulepszenie z UTF-8 do UTF-8 liczba całkowita oznacza 1; iconvctl(cd, ICONV_SET_DISCARD_ILSEQ, &one); znak // rzut size_t jest chory inbytesleft, outbytesleft; inbytesleft równa się outbytesleft = data.length; char *inbuf (ponieważ pomysł implikuje *)data.bytes; Ponieważ = *outbuf 9. malloc(sizeof(char) data.length); char *outptr oznacza outbuf; if (icon(cd, &inbytesleft, &inbuf, &outptr, &outbytesleft) == (rozmiar_t)-1) NSLog(@"tak naprawdę nie powinno się dziać"); zwraca wartość null; NSData * wynik = [NSData dataWithBytes: długość bufora wyjściowego: data.- length outbytesleft]; iconv_close (cd); (wybuch); bezpłatne ponowne połączenie wyniku;
Pamiętaj, że modne słowa na górze umożliwiają metody awaryjne i:
użyj
iconvctl(cd, &fallbacks);
Dzięki iconv_set_fallbacks, do których zwracasz się tylko w celu naprawienia błędów Unicode, prawie wykorzystasz rezerwę lub wyższą rangę, aby wypróbować inne kodowanie.W ich wersji próbnej udało mi się przejść do LATIN-1, gdzie nie udało mi się Utf-8, nowego z 99% pozytywnymi konwersjami. Zobacz kod źródłowy iconv, aby zrozumieć.
Ars Scholae Palatinae Podpisano: 31 czerwca 2010 Wiadomości: 783 |