Ho a che fare con una stringa urlencoded in ogg-c. Esiste una funzione di base che inverta effettivamente l'urlENCODING?urldecode in ogg-c
La stringa ricevuta è come: K% FChlschrank ma dovrebbe essere dopo la decodifica Kühlschrank
Ho a che fare con una stringa urlencoded in ogg-c. Esiste una funzione di base che inverta effettivamente l'urlENCODING?urldecode in ogg-c
La stringa ricevuta è come: K% FChlschrank ma dovrebbe essere dopo la decodifica Kühlschrank
Ho fatto una categoria veloce per aiutare a risolvere questo :)
@interface NSString (stringByDecodingURLFormat)
- (NSString *)stringByDecodingURLFormat;
@end
@implementation NSString
- (NSString *)stringByDecodingURLFormat
{
NSString *result = [(NSString *)self stringByReplacingOccurrencesOfString:@"+" withString:@" "];
result = [result stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
return result;
}
@end
Una volta definito, in fretta in grado di gestire una stringa codificata:
NSString *decodedString = [myString stringByDecodingURLFormat];
Un sacco di altri modi per implementare.
Credo che questo è quello che stai cercando:
- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Valore di ritorno:
una nuova stringa fatto sostituendo nel ricevitore tutte le percentuali di escape con i caratteri corrispondenti determinati dalla codifica fornita. Restituisce nil
se la trasformazione non è possibile, ad esempio, le percentuali di escape danno una sequenza di byte non legale nella codifica.
[source: Apple NSString Class Reference]
quello che codifica dovrei passare come parametro? provato NSUTF8StringEncoding già – Chris
um, non so quale sia la codifica effettivamente, ma c'è una lunga lista disponibile nella documentazione. –
okay, stavo ricevendo risposta da un NSURLRequest. La riga seguente ha corretto l'issure: NSString * deviceName = [[[NSString alloc] initWithData: returnData encoding: NSUTF8StringEncoding] stringByReplacingPercentEscapesUsingEncoding: NSISOLatin1StringEncoding]; – Chris
Secondo W3Schools, gli URL possono essere inviati solo su Internet utilizzando il set di caratteri ASCII. Per me questo pezzo di codice ha funzionato:
NSString *original = @"K%FChlschrank";
NSString *result2 = [original stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
- (NSString *)URLDecode:(NSString *)stringToDecode
{
NSString *result = [stringToDecode stringByReplacingOccurrencesOfString:@"+" withString:@" "];
result = [result stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
return result;
}
Questo è tutto
ha funzionato anche per me, grazie! – estoy
Per la soluzione parmanent su iOS 9, utilizzare il fermo, il codice
NSURL* link = [NSURL URLWithString:[url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];
La tua risposta è per la codifica della stringa, ma abbiamo bisogno di quella per decodificare la stringa. – Demona
piuttosto a portata di mano - thx – Chris
Credo che il risultato NSString, in realtà dovrebbe essere risultato NSString *. – christophercotton
Come dici tu ... – BadPirate