&编码 ios_ios url encode编码&未编码 - CSDN
  • iOS 编码和解码

    2016-06-24 14:20:35
    1.url编码 ios中http请求遇到汉字的时候,需要转化成UTF-8,用到的方法是: NSString * encodingString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 2.url解码 请求后...

    1.url编码


    ios中http请求遇到汉字的时候,需要转化成UTF-8,用到的方法是:


    NSString * encodingString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];


    2.url解码


    请求后,返回的数据,如何显示的是这样的格式:%3A%2F%2F,此时需要我们进行UTF-8解码,用到的方法是:


    NSString *str = [model.dataText stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];


    展开全文
  • iOS 显示汉字的Unicode和UTF-8编码
  • iOS之字符编码

    2019-06-12 14:19:07
    iOS程序中,访问一些HTTP/HTTPS的资源服务时,如果url中存在中文或者特殊字符时,会导致无法正常的访问到资源或服务,想要解决这个问题,需要对url进行编码。网络标准RFC 1738规定url中只能包含英文字母和阿拉伯.....

    Unicode和UTF8、ASCII码的转换:https://blog.csdn.net/zhusongziye/article/details/84261211

     

    在iOS程序中,访问一些HTTP/HTTPS的资源服务时,如果url中存在中文或者特殊字符时,会导致无法正常的访问到资源或服务,想要解决这个问题,需要对url进行编码。网络标准RFC 1738规定url中只能包含英文字母和阿拉伯数字,以及一些特殊字符:

    "只有字母和数字[0-9a-zA-Z]、和特殊符号"$-_.+!*'(),"[不包括双引号]、及某些保留字,才可以不经过编码直接用于URL。"

    此时如果url中包含如汉字或者其他特殊字符则需要对它进行编码,编码的意义在于,假如url的参数中的中文或特殊字符在发送到服务端时,服务端无法解析它的真正意义,会导致服务端不能理解客户端的请求。

    如:
    url中的保留字?表示后面连接的是一些请求参数,而参数中如果也包含?,服务端就不知道从哪个?之后是参数;
    url中的保留字&用来连接并列的参数项,参数中包含&时,服务端依然无法判断。

    2. 转码范围

    • ASCII 的控制字符:

      这些字符都是不可打印的,自然需要进行转化。

    • 一些非ASCII字符:

      这些字符自然是非法的字符范围。转化也是理所当然的了。

    • 一些保留字符:

      很明显最常见的就是“&”了,这个如果出现在url中了,那你认为是url中的一个字符呢,还是特殊的参数分割用的呢?

    • 一些不安全的字符了:

      例如:空格。为了防止引起歧义,需要被转化为“+”。

    • ------------url编码------

    NSString *originalUrl = @"https://www.xingshulin.com我是中文?p1=abc&p2=我是参数2";
    NSCharacterSet *encodeUrlSet = [NSCharacterSet URLQueryAllowedCharacterSet];
    NSString *encodeUrl = [originalUrl stringByAddingPercentEncodingWithAllowedCharacters:encodeUrlSet];
    NSLog(@"%@", encodeUrl);
    

    stringByAddingPercentEncodingWithAllowedCharacters接收NSCharacterSet对象,几种常用的NSCharacterSet

    URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}
    
    URLHostAllowedCharacterSet      "#%/<>?@\^`{|}
    
    URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}
    
    URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}
    
    URLQueryAllowedCharacterSet    "#%<>[\]^`{|}
    
    URLUserAllowedCharacterSet      "#%/:<>?@[\]^`
    
    

    ----------url编码和解码---------

    ******编码
    - (NSString *)URLEncodedString
    {
        // CharactersToBeEscaped = @":/?&=;+!@#$()~',*";
        // CharactersToLeaveUnescaped = @"[].";
    
        NSString *unencodedString = self;
        NSString *encodedString = (NSString *)
        CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                  (CFStringRef)unencodedString,
                       NULL,
                                                                  (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                                  kCFStringEncodingUTF8));
    
        return encodedString;
    }
    
    **********URL解码:
     - (NSString *)URLDecodedString
    {
    //self就是指的字符串,这里的编码和解码可以放在字符串分类中
        NSString *result = [(NSString *)self stringByReplacingOccurrencesOfString:@"+" withString:@" "];
        return [result stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    }
    --------------------- 
    

     

    ******编码相关解释:https://blog.csdn.net/shabijiayong/article/details/79094438

    1. ASCII码:美国规定的,128字符的编码。

    2.Unicode有符号的编码,Unicode是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样。

    Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

    3.UTF-8UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF- 16和UTF-32(基本不用)。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8的编码规则很简单,只有二条:1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

    Unicode与UTF-8之间可以转换。

    4.简体中文常见的编码方式是GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示256x256=65536个符号。

    5.url编码:非中文的编码:符号的ascii码转换成16进制,每两位加上%就得到URL编码;https://blog.csdn.net/myicer/article/details/83125460

    如果有中文的url编码:国外的网站都是按照UTF-8编码,而“百度”是按照“GB2312”进行编码的。比如搜索“中国”,URL是“http://www.baidu.com/s?wd=%D6%D0%B9%FA&cl=3”;

    UTF-8中,一个汉字对应三个字节,GB2312中一个汉字占用两个字节。
    不论何种编码,字母数字都不编码,特殊符号编码后占用一个字节。

    一个16进制占用半个字节。

     

    6、base64编解码原理

    数据编码成BASE64编码时,以3字节数据为一组,转换为24bit的二进制数,将24bit的二进制数分成四组,每组6bit。对于每一组,得到一个数字:0-63。然后根据这个数字查表即得到结果。

     

     

     

    ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版,如果是繁体中文版会采用Big5码)。

    展开全文
  • iOS字符串编码

    2019-09-30 18:21:46
    URL编码 api接口文档,iOS7及以上可用: - (nullable NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0)...

    GitHub地址

    URL编码

    api接口文档,iOS7及以上可用:

    - (nullable NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0));
    
    @property (class, readonly, copy) NSCharacterSet *URLQueryAllowedCharacterSet API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0));
    

    例子:

    NSString *string = @"汉字666";
    NSString *encodeString = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    

    兼容iOS7以下的api:

    - (nullable NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc API_DEPRECATED("Use -stringByAddingPercentEncodingWithAllowedCharacters: instead, which always uses the recommended UTF-8 encoding, and which encodes for a specific URL component or subcomponent since each URL component or subcomponent has different rules for what characters are valid.", macos(10.0,10.11), ios(2.0,9.0), watchos(2.0,2.0), tvos(9.0,9.0));
    

    例子:

    NSString *string = @"汉字666";
    NSString *encodeString = [string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    URL解码

    api接口文档,iOS7及以上可用:

    @property (nullable, readonly, copy) NSString *stringByRemovingPercentEncoding API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0));
    

    例子:

    NSString *decodeString = encodeString.stringByRemovingPercentEncoding;
    

    兼容iOS7以下的api:

    - (nullable NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)enc API_DEPRECATED("Use -stringByRemovingPercentEncoding instead, which always uses the recommended UTF-8 encoding.", macos(10.0,10.11), ios(2.0,9.0), watchos(2.0,2.0), tvos(9.0,9.0));
    

    例子:

    NSString *decodeString = [encodeString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    总结

    很多文章都说上面的URL编解码新api在iOS 9.0以上使用,其实他们可能看到9.0就以为iOS 9.0以上才能使用,或者看到老api9.0以上不能用就反推新api再iOS 9.0以上才可用,其实苹果文档里写的新api是tvos(9.0)?,而ios是7.0。所以,看文档要仔细哦?,以官方文档为准。

    展开全文
  • [iOS]iOS 中的 url 编码问题 NSString 的 stringByAddingPercentEscapesUsingEncoding 可以对 url 参数进行编码,但是有点小问题,不会对所有需要编码的字符都编码。我们可以通过 CFStringRef 的

    [iOS]iOS 中的 url 编码问题

    NSString 的 stringByAddingPercentEscapesUsingEncoding 可以对 url 参数进行编码,但是有点小问题,不会对所有需要编码的字符都编码。我们可以通过  CFStringRef 的 

    CFURLCreateStringByAddingPercentEscapes 函数来封装这个功能。代码如下:

    - (NSString *)encodeToPercentEscapeString: (NSString *) input
    {
        // Encode all the reserved characters, per RFC 3986
        // (<http://www.ietf.org/rfc/rfc3986.txt>)
        NSString *outputStr = (NSString *) 
        CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                (CFStringRef)input,
                                                NULL,
                                                (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                kCFStringEncodingUTF8);
        return outputStr;
    }
    
    - (NSString *)decodeFromPercentEscapeString: (NSString *) input
    {
        NSMutableString *outputStr = [NSMutableString stringWithString:input];
        [outputStr replaceOccurrencesOfString:@"+"
                                   withString:@" "
                                      options:NSLiteralSearch
                                        range:NSMakeRange(0, [outputStr length])];
    
        return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    }

    测试代码:

        NSString * testUrl      = @"http://search.google.com?keywords=($# it's {a*123})00!*'();:@&=+$,/?%#[]";
        NSLog(@"original: %@", testUrl);
    
        NSString * encodeStr    = [self encodeToPercentEscapeString:testUrl];
        NSLog(@"encoded: %@", encodeStr);
        
        NSString * encodeStr2   = [testUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSLog(@"encoded2:%@", encodeStr2);
        
        NSString * decodeStr    = [self decodeFromPercentEscapeString:encodeStr];
        NSLog(@"decoded: %@", decodeStr);
        

    结果如下:

        >> original: http://search.google.com?keywords=($# it's {a*123})00!*'();:@&=+$,/?%#[]
        >> encoded:  http%3A%2F%2Fsearch.google.com%3Fkeywords%3D%28%24%23%20it%27s%20%7Ba%2A123%7D%2900%21%2A%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23%5B%5D
        >> encoded2: http://search.google.com?keywords=($%23%20it's%20%7Ba*123%7D)00!*'();:@&=+$,/?%25%23%5B%5D
        >> decoded:  http://search.google.com?keywords=($# it's {a*123})00!*'();:@&=+$,/?%#[]
        


    展开全文
  • iOS - 音频AAC编码

    2018-03-28 14:17:51
    开发中通常会遇到的音频流的处理,我们知道从苹果设备麦克风上面获取的声音是驳杂的,我们利用原生框架&...这时候我们就需要将其编码,进而引入AAC高级音频编码! 1、PCM编码 通常我们采用的...
  • iOS编码格式

    2013-05-08 16:37:45
    目前所涉及的主要是gb2312和utf-8两种,utf-8是ios默认的编码格式,有时我们传递参数是要转换成gb2312格式的。或者返回的数据是gb2312格式的如果我们还是以utf-8格式进行接收,可能就接收不到。  将utf-8格式的...
  • Android和iOS是移动端的两大平台,Android以它的开源、易上手、开发成本低而受到广大开发者的青睐,而iOS作为苹果的封闭系统,以它的简单、流畅高效、高冷等特点也吸引了一大批果粉开发者,笔者在学校进行了近2年的...
  • 1.地理编码 给定一个名字(北京),获得给定名字对应的位置(经纬度) 2反地理编码 给定义个位置(经纬度),获得这个位置对应的详细信息(国家/省/街道/楼) #import "ViewController.h" #import <CoreLocation/...
  • iOS开发人员需要了解的苹果开发者账号与邓白氏编码 iOS开发人员需要了解的关于苹果开发者账号与邓白氏编码... 邓氏编码(D-U-N-SNumber)一旦申请成功就等于拥有了企业全球身份证识别码,帮助企业在交易中建立属于自己的
  • iOS URL编码&base64编码

    2016-12-17 14:13:31
    URL编码网络标准RFC 1738中规定URL中只能包含英文字、阿拉伯数字以及一些特殊字符。具体包括:字母和数组[0-9a-zA-Z]、特殊符号-._~:?#[]@!$&'()*+,;=\` 。URL中若含有这些规定符号以外的符号,URL都是不合法的,...
  • iOS中URL编码那些事

    2019-02-20 00:36:55
    前言在iOS程序中,访问一些HTTP/HTTPS的资源服务时,如果url中存在中文或者特殊字符时,会导致无法正常的访问到资源或服务,想要解决这个问题,需要对url进行编码。一、转码的原因和范围1. 为什么要转码网络标准RFC ...
  • ios url 编码和解码

    2016-05-12 11:46:43
    1.url编码 ios中http请求遇到汉字的时候,需要转化成UTF-8,用到的方法是: NSString * encodingString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 2.url解码 请求后,...
  • iOS 基本编码格式转化

    2012-08-19 20:20:44
    iOS编码转化 1.UTF-8转化  NSString *data = @"你好,北京!";  //转换成UTF-8  NSString *dataUTF8 = [data stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  NSLog(@"%@",...
  • IOS 视频硬编码H.264

    2018-02-02 14:34:40
    在学习了落影大神的相关博客及WWDC有关编解码的视频后准备总结下所思所得,先写有关硬编码的内容之后会再写关于硬解码的内容. 概念简要 众所周知,我们平时在网络上收看视频会经历视频编码及解码的过程.编码是为了...
  • 使用iOS自带AAC编码

    2015-08-14 18:53:28
    iOS平台支持AAC编码器接口,主要使用AudioConverter API。之所以做AAC编码器是因为在做一个HLS的功能,而HLS要求的TS文件,需要视频采用H264编码,音频采用AAC编码。H264可以使用硬件或软件编码器,前面已经介绍。...
  • URL编码是一种常见的编码方式,作用不多说,直接上代码。 URL编码: - (NSString *)URLEncodedString { // CharactersToBeEscaped = @":/?&amp;=;+!@#$()~',*"; // ...
  • 下面将会罗列使用Objective-C来开发iOS编码建议。 【1】 任意函数长度不得超过50行。(其实很容易就超过50行,这就要考虑代码抽取了。) 【2】 任意行代码不能超过80字符。(其实也很容易超过80字符,可以考虑...
  • 原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%84%E8%8C%83%E6%96%87%E6%A1%A3/2018-08-17-SDL-7-IOS%E5%AE%89%E5%85%A8%E7%BC%96%E7%A0%81%E8%A7%84%...
  • iOS url中文编码

    2016-03-15 10:41:26
    iOS url中文编码前几天碰到个问题,就是在搜索股票时,需要支持股票名检索的支持,那时候我的做法是直接将中文放到url中,这时候会出现url为nil,然后出现app的奔溃。后来想到应该是需要对中文进行编码,然后问题就...
1 2 3 4 5 ... 20
收藏数 78,684
精华内容 31,473
关键字:

&编码 ios