English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Soluzione del problema di codifica cinese disordinata degli URL iOS

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!

Ti potrebbe interessare