當前位置:編程學習大全網 - 編程語言 - 後端返回URL含有中文進行編碼、解碼處理

後端返回URL含有中文進行編碼、解碼處理

處理這個問題的初衷是:後端返回的用於跳轉web頁面的URL含有中文,WKWebView在加載包含中文的URL時發生了轉義而無法加載只是顯示空白頁面。需要對包含中文的URL進行編碼處理以防止發生轉義。

處理方式很簡單:

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

#pragma clang diagnostic push

#pragma clang diagnostic ignored"-Wdeprecated-declarations"

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

(CFStringRef)urlString,

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

NULL,

kCFStringEncodingUTF8));

returnencodedString;

#pragma clang diagnostic pop

}

- (NSString*)urlDecode:(NSString*)urlString? {

#pragma clang diagnostic push

#pragma clang diagnostic ignored"-Wdeprecated-declarations"

CFStringEncoding en = CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding);

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

withString:@" "];

decoded = (__bridge_transferNSString*)

CFURLCreateStringByReplacingPercentEscapesUsingEncoding(

NULL,

(__bridgeCFStringRef)decoded,

CFSTR(""),

en);

returndecoded;

#pragma clang diagnostic pop

}

對需要編碼處理的URL進行編碼處理即可,例子如下:

NSString *urlStr = @"/cashier-static/h5/cashier?systemCode=10007&sceneCode=10025&sign=ed37f0a3a541af5aa11cd273c65f2e44&partnerOrderCode=Z1007876566test&payTypeCode=TC0036&payMethodCode=10002&recipientName=中通快遞&platform=txkdg";

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

NSLog(@"編碼encodeString===%@",encodeString);

打印結果為: /cashier-static/h5/cashier?systemCode=10007&sceneCode=10025&sign=ed37f0a3a541af5aa11cd273c65f2e44&partnerOrderCode=Z1007876566test&payTypeCode=TC0036&payMethodCode=10002&recipientName=%E4%B8%AD%E9%80%9A%E5%BF%AB%E9%80%92&platform=txkdg

需要解碼回中文的話字節調用解碼方法即可。

  • 上一篇:求數字時鐘程序,是用51單片機做的,我們實驗室裏能提供六個數碼管,壹個74ls245,壹個74ls138譯碼器,只需
  • 下一篇:老化的編程和再編程
  • copyright 2024編程學習大全網