ios - url编码错误

标签 ios url encoding urlencode url-encoding

我有这个网址:http://google.com我用这个对其进行urlencode:

NSArray *escapeChars = [NSArray arrayWithObjects:@";" , @"/" , @"?" , @":" ,
                        @"@" , @"&" , @"=" , @"+" ,
                        @"$" , @"," , @"[" , @"]",
                        @"#", @"!", @"'", @"(",
                        @")", @"*", nil];
NSArray *replaceChars = [NSArray arrayWithObjects:@"%3B" , @"%2F" , @"%3F" ,
                         @"%3A" , @"%40" , @"%26" ,
                         @"%3D" , @"%2B" , @"%24" ,
                         @"%2C" , @"%5B" , @"%5D",
                         @"%23", @"%21", @"%27",
                         @"%28", @"%29", @"%2A", nil];
int len = [escapeChars count];
NSMutableString *temp = url;
int i;
for(i = 0; i < len; i++)
{
    [temp replaceOccurrencesOfString: [escapeChars objectAtIndex:i] withString:[replaceChars objectAtIndex:i] options:NSLiteralSearch range:NSMakeRange(0, [temp length])];
}
return temp;

这是我得到的编码字符串:http0X1.D49C41C5D49CP-5700.0000000.000000google.com

怎么会发生这种事?

最佳答案

这是 URL 编码的类别:

NSString+URLEncoding.h

#import <Foundation/Foundation.h>

@interface NSString (URLEncoding)
- (NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding;
@end

NSString+URLEncoding.m

#import "NSString+URLEncoding.h"

@implementation NSString (URLEncoding)

- (NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                                           (CFStringRef)self,
                                                           NULL,
                                                           (CFStringRef)@"!*'\"();:@&=+$,/?%#[]%  ",
                                                           CFStringConvertNSStringEncodingToEncoding(encoding));
}
@end

用法:

NSString *urlText = @"http://google.com";
NSString *encodedUrlText = [urlText urlEncodeUsingEncoding:NSUTF8StringEncoding];

关于ios - url编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14689023/

相关文章:

ios - 如何使用UIDocumentBrowserViewController在iCloud上重新打开UIDocument

java - 将 URL 转换为普通 Windows 文件名 Java 6

python - 如何在 Python 中创建 GSM-7 编码?

python - 如何处理 Selenium 中的奇怪字符? 'utf8' 编解码器无法解码位置 0 中的字节 0xc3 :

ios - 我怎样才能让这个功能停止重复问题?

ios - Sqlite 数据库锁定错误 - iOS

php - 为什么 URL 的哈希部分在服务器端不可用?

android - 在 Android TextView 中编码

Ios swift View 之间的间距和/或边距百分比 %

ios - 无法在 iOS 11 上使用 TwitterKit 发送推文