He tenido que cambiar de stringByAddingPercentEscapesUsingEncoding a CFURLCreateStringByAddingPercentEscapes porque no escapa a los signos de interrogación (?). Tengo curiosidad por lo que exactamente se escapa, y la razón de ser del escape parcial vs RFC 3986.¿Cuáles son los caracteres que escapa stringbyAddingPercentEscapesUsingEncoding?
Respuesta
Algunos buenos categorías se han creado para hacer justo lo que necesito: http://iosdevelopertips.com/networking/a-better-url-encoding-method.html http://www.cocoanetics.com/2009/08/url-encoding/
La justificación para dejar ciertos caracteres están más allá de mí ... excepto decir que la definición de la función es: 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.
Para ser completamente correcto, + y & son caracteres legales dentro de una URL, mientras que un espacio no lo es. Por lo tanto, el método escapará correctamente de un espacio, pero deja + y & intactos.
Lectura RFC2396 http://www.ietf.org/rfc/rfc2396.txt - hay un conjunto de caracteres reservados y sin reserva definidos. Supongo que ninguno de estos caracteres es escapado por stringByAddingPercentEscapesUsingEncoding.
Tenga cuidado de no perder memoria en las conversiones cuando use CFStringRef. Esto es lo que se me ocurrió para trabajar con personajes latinos y otros. Lo uso para escapar de mis parámetros, no de la URL completa. Dependiendo de su caso de uso, puede que tenga que añadir o quitar caracteres de "escapeChars"
CFStringRef escapeChars = (CFStringRef)@"%;/?¿:@&=$+,[]#!'()*<>¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \"\n";
NSString *encodedString = (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge_retained CFStringRef) url, NULL, escapeChars, kCFStringEncodingUTF8);
espero que esto ayude.
- 1. ¿Cuáles son los caracteres válidos para los nombres de macro?
- 2. ¿Cuáles son los caracteres divididos en TextWrapping de Silverlight?
- 3. ¿Cuáles son todos los caracteres japoneses de espacios en blanco?
- 4. ¿Cuáles son los caracteres permitidos en un subdominio?
- 5. ¿Cuáles son los caracteres permitidos en una palabra clave Clojure?
- 6. ¿Cuáles son todos los personajes de escape?
- 7. ¿Cuáles son los nuevos marcos?
- 8. ¿Cuáles son los caracteres legales/permitidos para los nombres de los archivos del servidor web?
- 9. ¿Cuáles son los eventos que puedo usar en Excel
- 10. ¿Cuáles son los proyectos más interesantes que rodean a python?
- 11. ¿Cuáles son los peligros de un idioma que es "propiedad"?
- 12. ¿Cuáles son las entidades de caracteres compatibles para comentarios XML?
- 13. ¿Cuáles son algunos ejemplos en los que los árboles de expresiones son útiles?
- 14. ¿Cuáles son los nombres de tabla válidos en SQLite?
- 15. ¿Cuáles son los diez permisos más mortales?
- 16. ¿Cuáles son los comandos destructivos en git?
- 17. ¿Cuáles son los mejores componentes de Boost?
- 18. ¿Cuáles son los méritos relativos de pdflatex?
- 19. ¿Cuáles son los cambios recientes a F #?
- 20. ¿Cuáles son los verdaderos beneficios de ExpandoObject?
- 21. ¿Cuáles son los grandes frameworks web hoy?
- 22. ¿Cuáles son los inconvenientes de usar Lucene?
- 23. ¿Cuáles son los otros valores de NaN?
- 24. ¿Cuáles son los peligros de ADL?
- 25. ¿Cuáles son los beneficios de Java?
- 26. ¿Cuáles son los límites de TDD?
- 27. ¿Cuáles son los peligros de usar sql_variant?
- 28. ¿Cuáles son los beneficios de corutinas?
- 29. ¿Cuáles son los beneficios de JCA?
- 30. SQLite: ¿cuáles son los límites prácticos?
Ahora solo necesito unos minutos para leer ese documento ... :) –