美文网首页
iOS 针对有中文的url图片

iOS 针对有中文的url图片

作者: 大王叫我来巡山_Cong | 来源:发表于2017-05-26 14:20 被阅读1015次
SD.jpg

SDWebImage 针对有中文的 url 会不显示图片的

  • 所以需要先把 url 转为 utf8 编码
NSString *url = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
  • 但是假如工程已经很大了,很多地方都用到了,不可能一个一个加吧
    所以就需要 Category 了

代码如下:
记得导入下 runtime 头文件

#import <objc/runtime.h>
+ (void)load {
    /*
     self:UIImage
     谁的事情,谁开头 1.发送消息(对象:objc) 2.注册方法(方法编号:sel) 3.交互方法(方法:method) 4.获取方法(类:class)
     Method:方法名
     
     获取方法,方法保存到类
     Class:获取哪个类方法
     SEL:获取哪个方法
     imageName
     */
    // 获取imageName:方法的地址
    Method URLWithStringMethod = class_getClassMethod(self, @selector(URLWithString:));
    
    // 获取sc_imageWithName:方法的地址
    Method sc_URLWithStringMethod = class_getClassMethod(self, @selector(sc_URLWithString:));
    
    // 交换方法地址,相当于交换实现方式2
    method_exchangeImplementations(URLWithStringMethod, sc_URLWithStringMethod);
    
}


+ (NSURL *)sc_URLWithString:(NSString *)URLString {
    
    NSString *newURLString = [self IsChinese:URLString];
    return [NSURL sc_URLWithString:newURLString];
}

//判断是否有中文
+ (NSString *)IsChinese:(NSString *)str {
    NSString *newString = str;
    
    for(int i=0; i< [str length];i++){
        int a = [str characterAtIndex:i];
        if( a > 0x4e00 && a < 0x9fff)
        {
            NSString *oldString = [str substringWithRange:NSMakeRange(i, 1)];
            NSString *string = [oldString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            newString = [newString stringByReplacingOccurrencesOfString:oldString withString:string];
        } else{
            
        }
    }
    return newString;
}

原理:就是利用 runtime 交换方法(method_exchangeImplementations) 来替代系统的方法。

警告:尽量还是使用 英文命名,不要使用中文命名。

相关文章

  • iOS 针对有中文的url图片

    SDWebImage 针对有中文的 url 会不显示图片的 所以需要先把 url 转为 utf8 编码 但是假如...

  • iOS 防止url有中文

    urlString = [urlString stringByAddingPercentEncodingWithA...

  • iOS中URL的中文编码和URL拼接字符串的问题

    一、URL中的中文编码问题 在开发中,后端提供的接口中,有个图片的url中带有了中文,导致在创建NSURL时返回为...

  • iOS URL 含有中文 含有乱码

    1.URL 含有中文 用sdwebimage 加载图片加载不出来,打印发现URL中有中文 解决方案 2.URL 含...

  • 图片URL中文转码

    背景 最近碰到客户将图片存储在内网服务器里,需要在内网将图片down下来存储成Base64字符串,再调用平台接口将...

  • url中文乱码

    iOS中的URL处理中文乱码 - CSDN博客 1.url编码 ios中http请求遇到汉字的时候,需要转化成UT...

  • swift-url编解码

    url的编码与解码,在工程中很常用,编解码针对特殊字符及中文,确保url可以正常访问

  • ios随笔学习之HTTP基础

    一、URL的编码 URL中一旦出现了特殊字符(比如中文、空格),需要进行编码。比如: 0、URL的组成?参考iOS...

  • SDWebimage加载不出图片

    1、检查图片URL中是否包含中文字,如果有,需要解码一次才能加载图片 NSString *url = [str s...

  • SDWebImage相关

    项目中出现 url 链接中有中文时,图片不显示解决办法就是 对 URL 链接中的 value 进行 URL 编码 ...

网友评论

      本文标题:iOS 针对有中文的url图片

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