服务端返回 hard.storage.shmedia.tech/%E6%96%B0%E… SDWebImage 无法加载上面链接 ,因为服务端对中文做了编码,未通知客户端,客户端也是统一做了编码的 ,两次编码导致无法加载 解决方法: 客户端判断url是否包含中文,包含中文就执行编码。 上代码
- (void)setImageUrl:(NSString *)url placeholderImage:(NSString *)imageName
{
if ([url length] == 0) {
self.image = [UIImage imageNamed:imageName];
}
if ([url includeChinese]) {
url = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
}
//
[self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:imageName] options:SDWebImageLowPriority|SDWebImageRetryFailed|SDWebImageScaleDownLargeImages];
}
是否包含中文
- (BOOL)includeChinese
{
for(int i=0; i< [self length];i++)
{
int a =[self characterAtIndex:i];
if( a >0x4e00&& a <0x9fff){
return YES;
}
}
return NO;
}