Musiałem przejść od stringByAddingPercentEscapesUsingEncoding do CFURLCreateStringByAddingPercentEscapes, ponieważ nie wymyka się ono znakom zapytania (?). Jestem ciekaw, co dokładnie ma ucieczki, a uzasadnienie częściowego ucieczce vs RFC 3986.Jakie znaki są usuwane przez stringByAddingPercentEscapesUsingEncoding?
Odpowiedz
Kilka dobrych kategorie zostały stworzone dla robi tylko to, czego potrzebujesz: http://iosdevelopertips.com/networking/a-better-url-encoding-method.html http://www.cocoanetics.com/2009/08/url-encoding/
Uzasadnieniem pozostawiając niektóre znaki są poza mną ... z wyjątkiem stwierdzenia, że definicja funkcji: Returns a representation of the receiver using a given encoding to determine the percent escapes necessary to convert the receiver into a legal URL string.
Aby być całkowicie poprawnym, + i & są legalnymi znakami w adresie URL, podczas gdy spacja nie jest. W związku z tym metoda będzie poprawnie uciec z przestrzeni, ale pozostawia nienaruszone + i &.
Czytanie RFC2396 http://www.ietf.org/rfc/rfc2396.txt - zdefiniowano zestaw zarezerwowanych i niezarezerwowanych znaków. Domyślam się, że żadna z tych postaci nie jest chroniona przez stringByAddingPercentEscapesUsingEncoding.
Należy uważać, aby nie spowodować wycieku pamięci na konwersje podczas korzystania z CFStringRef. Oto, co wymyśliłem, aby pracować ze znakami łacińskimi i innymi. Używam tego, aby uciec moim parametrom, a nie całemu adresowi URL. W zależności od przypadku użycia, może być konieczne dodanie lub usunięcie znaków z "escapeChars"
CFStringRef escapeChars = (CFStringRef)@"%;/?¿:@&=$+,[]#!'()*<>¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \"\n";
NSString *encodedString = (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge_retained CFStringRef) url, NULL, escapeChars, kCFStringEncodingUTF8);
Mam nadzieję, że to pomoże.
- 1. Jakie znaki NIE są obecne w Unicode?
- 2. Jakie znaki są poprawne w adresie URL?
- 3. Jakie znaki są pozostawione dla tokenów pp?
- 4. Jakie znaki są niedozwolone w nazwie oddziału?
- 5. Jakie są legalne/dozwolone znaki dla nazw plików serwera WWW?
- 6. Jakie znaki uciekną PreparedStatement?
- 7. Jakie nagłówki są automatycznie wysyłane przez wget?
- 8. Jakie typy plików są obsługiwane przez WKWebView?
- 9. Jakie ulepszenia dostępności są oferowane przez HTML5?
- 10. Jakie są domyślne repozytoria używane przez SBT?
- 11. Jakie są dwa znaki separatora w zakotwiczeniu adresu URL?
- 12. Jakie są prawidłowe znaki w nazwach przestrzeni nazw PHP?
- 13. Jakie znaki specjalne są dozwolone w nazwie kolumny T-SQL?
- 14. Jakie znaki są dozwolone w nazwie atrybutu HTML?
- 15. Jakie są dozwolone znaki w słowach kluczowych Clojure?
- 16. Sesje Connect-mongo nie są automatycznie usuwane
- 17. nagłówki odpowiedzi HTTP golang są usuwane
- 18. Docker - Kontenery są usuwane po zbudować
- 19. Wszystkie znaki nowej linii są usuwane podczas zapisywania koci Ouput do zmiennej
- 20. W jaki sposób znaki są przesyłane przez formularz?
- 21. SQL 2005 Maintenance Cleanup Task .bak pliki nie są usuwane
- 22. Jakie są alternatywy ClickOnce?
- 23. Czy odwołania tymczasowe są automatycznie usuwane w Pythonie?
- 24. Dlaczego moje pliki cookie nie są usuwane/rozbrajane?
- 25. Jakie są zalety coroutines?
- 26. W jaki sposób komponenty są usuwane z Castle 3.0?
- 27. Jak i kiedy są usuwane elementy statyczne C#?
- 28. Jak usunąć niewidoczne obiekty z obszaru roboczego R, które nie są usuwane przez usuwanie śmieci?
- 29. Procesy zabite przez system Android: czy powiadomienia na bieŜąco są usuwane?
- 30. Przestrzenie wokół operatorów mnożenia i dzielenia są usuwane przez IDE, jak je zachować?
Teraz potrzebuję tylko kilku minut, aby przeczytać ten dokument ... :) –