问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

后端返回URL含有中文进行编码、解码处理

发布网友 发布时间:2022-12-02 14:44

我来回答

1个回答

热心网友 时间:2023-11-10 13:24

处理这个问题的初衷是:后端返回的用于跳转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 = @"https://pay-zto-test.zt-express.com/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);

打印结果为: https://pay-zto-test.zt-express.com/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

需要解码回中文的话字节调用解码方法即可。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
cf手游体验服4月资格申请问题答案大全_2021年4月cf手游体验服资格申请... 2024.03-2024.04排位赛季历程的名字是 cf手游4月体验服答题第10题... 如何区别男人的早泄和阳痿 早泄与阳痿的关系 串联谐振原理下,试品电压如何达到试验值? 想自己做一个网站,但需要备案,自己可以注册一个企业吗 WPS Office中怎么创建企业 创建企业的详细操作教程分享 李小冉冻龄,素颜肌肤让网友不淡定,这颜值太绝了,你羡慕了吗? 怀孕能用酒精擦脚吗 朋友圈评论怎么删除_朋友圈评论删除功能介绍 联想电脑纽扣电池没电了会出现什么情况 是否影响电脑性能 桑坡的蒙口羽绒服怎么样 帝虎和蒙口羽绒服哪个好 马来西亚产的蒙口羽绒服怎么样 博格纳和蒙口品牌羽绒服哪个好一点 怎么分辨一次性和可擦写刻录光盘? 皮肤被有毒的植物扎伤怎么处理 踏板车皮带多少公里换一次? 苹果电脑internet协议在哪 airpods怎么买ac 如何帮apk的文件安装到苹果手机里呢!大神们,说说,高分拜托各位大神 NaHCO3在医疗上的一种用途是什么 NaHCO3在医学上的用途 分析 阳光电源股票走势分析?阳光电源的盈利能力分析?牛叉诊股阳光电源股票? 江苏师范大学校医院几点开门 西安电子科技大学新校区校医院晚上开门不 西华师范大学校医院几点开门 求小说里五个字的武功名称,比如铁掌水上漂、庐山升龙霸 抖音来消息声音怎么修改? 标签打印机买汉印的怎么样? java 通过code 得到label 类似枚举 请问怎么把文件刻录到光盘上,求方法,顺便帮我解释一下要装什么软件 ,还有下载地址,谢谢啦! 烧狗刻录怎么刻录word文档 高校录入回执后显示什么 怎样看自己是否已填写南网征集回执 吃鸡蛋会让胆固醇升高?体内胆固醇高,该如何降低?不妨了解下吧 吃碎鸡蛋胆固醇会升高吗? 国泰君安是国企吗 大写的义怎么写 求分享!四川德阳出了名的特色美食有哪些 德阳让你最难忘的美食是什么? 鱼鳞怎么算鱼鳞年龄 怎么从鱼鳞判断鱼的年龄? WDZB1N-YJY在电气图中是什么意思? 巅峰论坛为什么关闭了 请问巅峰推理论坛的网址是什么?刚喜欢上推理的新人 谁是首富巅峰首富论坛怎么参加 为什么我没有粉丝?难道我回答的答案不对? 退税申请情况说明 梦幻西游手游宠物宠物最后低技能怎么弄