美文网首页
iOS Url特殊符号编码问题

iOS Url特殊符号编码问题

作者: 路漫漫其修远兮Wzt | 来源:发表于2018-06-28 11:53 被阅读45次

原文参考:iOS Url特殊符号编码问题

当时传输参数给后台,后台总是解析失败。错误信息:

error = "java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: \"\Uff0c\U529e\"
\n\tat java.net.URLDecoder.decode(URLDecoder.java:173)
\n";

可以看到就是因为,请求参数中含有特殊字符,没有处理,导致服务器那边无法正确解析。现在觉得应该是这个问题,url中或者POST请求参数中,带了&%等这些特殊符号,单单使用encodeBase64decodeBase64不行,还要使用encodeToPercentEscapeString这个处理一下。encodeBase64decodeBase64对汉字和空格进行编码,但不对特殊符号(&%等)编码。

(1)url中key value键值对,根据&进行分割多个key value,所以如果url像这样
@"http://127.0.0.1/php/login.php?username=chang&123&password=admin",
用户名解析的是username为chang而不是chang&123。使用encodeToPercentEscapeString处理后,不会出现这样问题。
(2)POST请求,请求参数中含有特殊字符,也是同样的原理;

//base64编码 "加密"---  可以把任意的二进制数据 转化成字符串  方便在网络上传输
- (NSString *)encodeBase64:(NSString *)str{
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

    return [data base64EncodedStringWithOptions:0];
}
//base64解码 "解密"
- (NSString *)decodeBase64:(NSString *)base64Str{
    NSData *data = [[NSData alloc] initWithBase64EncodedString:base64Str options:0];

    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

//进行特殊字符的编码 (但是不对汉字和空格进行编码)
- (NSString *)encodeToPercentEscapeString: (NSString *) input
{
    NSString *outputStr = (NSString *) CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)input,NULL,(CFStringRef)@"!*'();:@&=+ $,/?%#[]",kCFStringEncodingUTF8));
    return outputStr;
}

相关文章

  • iOS Url特殊符号编码问题

    原文参考:iOS Url特殊符号编码问题 当时传输参数给后台,后台总是解析失败。错误信息: 可以看到就是因为,请求...

  • iOS Url特殊符号编码问题

    开发中曾遇到棘手无法解决的问题,当时传输参数给后台,后台总是解析失败。问题一直未解,最后还是换了其它方法曲线解困了...

  • Java代码处理URL转码

    一、URL特殊符号及对应的编码 二、解码代码

  • url编码

    为什么要进行URL编码 编码是对url中的中文和特殊符号进行编码。对url编码其实就是对一些特殊字符进行使用utf...

  • URL合法化

    URL合法化 iOS开发过程中,网络数据请求中带有汉字或者特殊符号需要经过编码处理,使得URL合法化之后才能进行网...

  • iOS URL编码

    参考 全面深度解析iOS端URL编码和解码过程 iOS中URL编码那些事

  • iOS URL编码 AFNetworking

    iOS URL编码

  • iOS URL安全的Base64编码、解码

    参考iOS开发探索-Base64编码iOS URL编码&base64编码URL安全的Base64编码,解码 为什么...

  • 全面深度解析iOS端URL编码和解码过程

    全面深度解析iOS端URL编码和解码过程全面深度解析iOS端URL编码和解码过程

  • 网络请求中为什么会有%2F、%3F这样的符号

    因为有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:...

网友评论

      本文标题:iOS Url特殊符号编码问题

      本文链接:https://www.haomeiwen.com/subject/cykgyftx.html