English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Soluzione del problema di caratteri cinesi disordinati per URL su IOS
Quando si crea una connessione HTTPS, è necessario che il client compili un indirizzo HTTPS
Se l'indirizzo contiene caratteri cinesi, il programma si blocca. La verifica ha rivelato che il motivo è che i caratteri cinesi non sono stati codificati correttamente
Trovate due metodi nella libreria NSString:
- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding - (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Ho provato, funziona
NSString* string1 = @"https://www.cloudsafe.com/文件夹"; NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString* string3 = [string2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString* string4 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString* string5 = [string3 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString* string6 = [string4 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString* string7 = [string5 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Ecco il risultato di string1-7:
string1:https://www.cloudsafe.com/文件夹 string2:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9 string3:https://www.cloudsafe.com/%25E6%2596%2587%25E4%25BB%25B6%25E5%25A4%25B9 string4:https://www.cloudsafe.com/文件夹 string5:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9 string6:https://www.cloudsafe.com/文件夹 string7:https://www.cloudsafe.com/ cartella
Spiego brevemente come lo uso:
Dopo aver composto l'URL, codificare due volte l'intera String
NSMutableString *address = [[NSMutableString stringWithString:SetNiChengStringWithoutUserNameAndNiCheng] mutableCopy]; address = [[address stringByAppendingString:app.name] mutableCopy]; address = [[address stringByAppendingString:@"/"] mutableCopy]; address = [[address stringByAppendingString:_nameTextField.text] mutableCopy]; address = [[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] mutableCopy]; address = [[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] mutableCopy];
Sul lato del server, se si desidera solo memorizzare in modo semplice, il server può ricevere i dati senza convertirli in cinese
Quando il client richiede questa parte dei dati, il client stesso può decodificarla
Dopo aver ricevuto la stringa, decodificarla una volta per visualizzarla correttamente come cinese:
str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Grazie per aver letto, spero di essere stato d'aiuto, grazie per il supporto al nostro sito!