addingpercentencoding - Cómo decodificar URL en iOS-Objective C
url encoding swift ios (5)
El método stringByReplacingPercentEscapesUsingEncoding no funciona correctamente ya que no está decodificando símbolos especiales que no comienzan con un carácter%, es decir, el carácter +. ¿Alguien sabe de un método mejor para hacer esto en iOS?
Esto es lo que estoy usando actualmente:
NSString *path = [@"path+with+spaces"
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Y aquí hay un ejemplo de la salida:
camino + con + espacios
Si está intentando reemplazar el signo más con el porcentaje de escapes, realice un reemplazo de cadena de "+" a "" (espacio único). Luego use stringByAddingPercentEscapesUsingEncoding:
para agregar el porcentaje de escapes.
El signo más es uno de los muchos caracteres URL reservados que nunca se codifican.
( stringByReplacingPercentEscapesUsingEncoding:
decodifica el porcentaje de escapes)
Swift 2:
extension String {
func uriDecodedString() -> String? {
return self.stringByReplacingOccurrencesOfString("+", withString: " ").stringByRemovingPercentEncoding
}
}
También puedes usar la biblioteca PercentEncoder de Cocoapods.
Swift 4
Incluye la biblioteca a tu Podfile:
Pod PercentEncoder
Importar la biblioteca PercentEncoder
importar PercentEncoder
clase ViewController {
...
}
Reemplace el carácter "+" por "% 20" y use el método "ped_decodeURI"
"ruta + con + espacios" .replacingOccurrencias (de: "+", con: "% 20"). ped_decodeURI ()
Volverá "camino con espacios"
Aquí el enlace de referencia: https://cocoapods.org/pods/PercentEncoder
// Decode a percent escape encoded string.
- (NSString*) decodeFromPercentEscapeString:(NSString *) string {
return (__bridge NSString *) CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,
(__bridge CFStringRef) string,
CFSTR(""),
kCFStringEncodingUTF8);
}
http://cybersam.com/ios-dev/proper-url-percent-encoding-in-ios
Esta parece ser la forma preferida porque ... "Aparentemente" se trata de un "error" que Apple conoce, pero aún no han hecho nada al respecto ... ( http://simonwoodside.com/weblog/2009/4/22/how_to_really_url_encode/ )
NSString *path = [[@"path+with+spaces"
stringByReplacingOccurrencesOfString:@"+" withString:@" "]
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Tenga en cuenta que la sustitución de más por espacio solo se usa en datos de application/x-www-form-urlencoded
: la parte de la cadena de consulta de una URL o el cuerpo de una solicitud POST
.