Red de conocimientos turísticos - Información de alquiler - La URL devuelta por el servidor contiene caracteres chinos para codificar y decodificar.

La URL devuelta por el servidor contiene caracteres chinos para codificar y decodificar.

La intención original de solucionar este problema es que la URL devuelta por el backend para saltar a la página web contenga chino. WKWebView se escapa al cargar la URL que contiene chino y no se puede cargar, pero muestra una página en blanco. Las URL que contienen chino deben codificarse para evitar que se escapen.

El método de procesamiento es muy simple:

- (NSString*)urlEncode:(NSString*)urlString {

#pragma clang diagnostic push

#pragma clang diagnostic ignorado"-Wdeprecated-declarations"

NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,

(CFStringRef)urlString,

(CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",

NULL,

kCFStringEncodingUTF8) );

returnencodedString;

#pragma clang diagnostic pop

}

- (NSString*)urlDecode:(NSString* )urlString ? /p >

NSString *decoded = [urlString stringByReplacingOccurrencesOfString:@"+"

withString:@" "];

decoded = (__bridge_transferNSString*)

CFURLCreateStringByReplacingPercentEscapesUsingEncoding(

NULL,

(__bridgeCFStringRef)decodificado,

CFSTR(""),

es);

returndecoded;

#pragma clang diagnostic pop

}

Simplemente codifique la URL que debe codificarse. El ejemplo es el siguiente:

NSString *urlStr = @"/cashier-static/h5/cashier?systemCode=10007&sceneCode=10025&sign=ed37f0a3a541af5aa11cd273c65f2e44&partnerOrderCode=Z1007876566test&pay. Oda tipo C =TC0036&payMethodCode =10002&recipientName=ZTO Express&platform=txkdg";

?NSString*encodeString = [self urlEncode:urlStr];

NSLog(@"encodingencodeString===%@", encodeString );

El resultado impreso es: /cashier-static/h5/cashier?systemCode=10007&sceneCode=10025&sign=ed37f0a3a541af5aa11cd273c65f2e44&partnerOrderCode=Z1007876566test&payTypeCode=TC0036&payMethodC ode=10002&re cipientName=%E4%B8%AD%E9%80%9A % E5%BF%AB%E9%80%92&platform=txkdg

Si necesita decodificar al chino, simplemente llame al método de decodificación por byte.