美文网首页
iOS开发中NSString与NSData相互转码?网址编码?

iOS开发中NSString与NSData相互转码?网址编码?

作者: 随心吧 | 来源:发表于2017-03-09 16:35 被阅读459次
    『导言』

    iOS开发中,对于请求网络数据时候,经常需要处理编码转码问题?经常出现NSUTF8StringEncoding字样,在NSData和NSString的转换中如何用?


    • NSUTF8StringEncoding编码解码?
    • 编码: 使汉字** →** 含%的字符串
    NSString *nameStr = [[NSString alloc]init];
    nameStr = [nameStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    
    • ** 解码**:使汉字 %的字符串
    NSString *transString = [NSString stringWithString:[string stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    
    • NSSDataNSString的相互转换?
    • str转datainitWithData: encoding:
    • 用法
    NSString *str = @"username=zwj&pwd=123&type=JSON";
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    
    • data转strdataUsingEncoding:
      • 用法
    NSString *str2 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    
    • 网址含汉字如何转码?str->str
    • str转str: stringByAddingPercentEscapesUsingEncoding:
    • 用法:
    NSString *str = @"http://120.25.226.186:32812/login2?username=文娟&pwd=520it&type=JSON";
    str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    
    • POSTGET请求,何时需要转码?
    • GET请求:
    *  若url的`路径参数`含有`汉字`,需要`转码`;
     * 例1:参数中含有`汉字`为`小码哥`
    
       NSString *str = @"http://120.25.226.186:32812/login2?username=小码哥&pwd=520it&type=JSON";
        str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    
    • POST请求:
      • 若url的域名含有汉字,进行转码
      • HTTPBody 请求体:已经进行了编码,所以不需要转码。
        例2:
        request.HTTPBody = [@"username=小码哥&pwd=520it&type=JSON" dataUsingEncoding:NSUTF8StringEncoding];
    
    • 总结:
    • strdata
    initWithData:  encoding:
    
    • datastr
    dataUsingEncoding:
    
     > * `str`转`str`:
    
    stringByAddingPercentEscapesUsingEncoding:
    
    图.开心一刻
    • 链接

    <1>.NSSData和NSString的相互转换
    <2>.iOS开发中,如何转码字符串NSString或者网址str?

    相关文章

      网友评论

          本文标题:iOS开发中NSString与NSData相互转码?网址编码?

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