Estoy tratando con una cadena urlencoded en objetivo-c. ¿Existe una función de base que realmente revierte el urlENCODING?urldecode en objetivo-c
La cadena recibida es como: K% FChlschrank pero debe ser después de la decodificación Kühlschrank
Estoy tratando con una cadena urlencoded en objetivo-c. ¿Existe una función de base que realmente revierte el urlENCODING?urldecode en objetivo-c
La cadena recibida es como: K% FChlschrank pero debe ser después de la decodificación Kühlschrank
Hice una categoría rápida para ayudar a resolver este :)
@interface NSString (stringByDecodingURLFormat)
- (NSString *)stringByDecodingURLFormat;
@end
@implementation NSString
- (NSString *)stringByDecodingURLFormat
{
NSString *result = [(NSString *)self stringByReplacingOccurrencesOfString:@"+" withString:@" "];
result = [result stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
return result;
}
@end
Una vez definido, esto rápidamente puede manejar una cadena codificada:
NSString *decodedString = [myString stringByDecodingURLFormat];
Un montón de otras maneras de implementar.
Creo que esto es lo que busca:
- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Valor de retorno:
Una nueva cadena hecho reemplazando en el receptor, todos los porcentajes se escapan con los caracteres coincidentes determinados por la codificación dada. Devuelve nil
si la transformación no es posible, por ejemplo, el porcentaje de escape da una secuencia de bytes no legal en la codificación.
[source: Apple NSString Class Reference]
qué codificación debería pasar como parámetro? intenté NSUTF8StringEncoding ya sea – Chris
um, no sé qué codificación es en realidad, pero hay una larga lista disponible en la documentación. –
bien, estaba recibiendo respuesta de una solicitud NSURL. La siguiente línea corrigió la emisión: NSString * deviceName = [[[NSString alloc] initWithData: returnData encoding: NSUTF8StringEncoding] stringByReplacingPercentEscapesUsingEncoding: NSISOLatin1StringEncoding]; – Chris
De acuerdo con W3Schools, las URL solo pueden enviarse a través de Internet utilizando el juego de caracteres ASCII. Para mí, este trozo de código funcionó:
NSString *original = @"K%FChlschrank";
NSString *result2 = [original stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
- (NSString *)URLDecode:(NSString *)stringToDecode
{
NSString *result = [stringToDecode stringByReplacingOccurrencesOfString:@"+" withString:@" "];
result = [result stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
return result;
}
eso es todo
funcionó para mí también, gracias! – estoy
para la solución parmanent en IOS 9, utilice el barbecho código
NSURL* link = [NSURL URLWithString:[url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];
Su respuesta es para codificar la cadena, pero necesitamos una para decodificar la cadena. – Demona
bastante útil-thx – Chris
Creo que el resultado NSString, en realidad debería ser el resultado NSString *. – christophercotton
Como dices ..... – BadPirate