有没有类似这样的东西
+(NSString *) URLencode: (NSString *) someString
+(NSString *) URLdecode: (NSString *) someString如果是这样,如何实施呢?
向下投票的人请注意。这不是一个简单的问题。我需要一些东西,可以全面做到这一点。例如:
NSString * test = @"汉字马拉松是";
NSString * encoded = [test stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
PO(encoded);
PO(test);将产生以下结果:
2012-06-04 16:04:22.709 BadgerNew[2266:17003] <0xcd890 GrabClass.m:(930)> encoded (null)
2012-06-04 16:04:22.710 BadgerNew[2266:17003] <0xcd890 GrabClass.m:(931)> test 汉字马拉松是我希望我的编码能够URL编码一切,包括日语等。
所以我希望编码包含沿%E6%B1%89%E5%AD%97%E9%A9%AC%E6%8B%89%E6%9D%BE%E6%98%AF的内容
在http://mobiledevelopertips.com/networking/a-better-url-encoding-method.html中有两种不同的方法
没有一个足够好。
我需要能够对所有字符串进行编码,包括日语/中文字符。
更新:我遵循H2CO3 answer并这样做: NSString * NSString = @"汉字马拉松是";NSString*汉字马拉松是=测试测试PO(已编码);PO(测试);PO(已编码);
按照预期工作。
发布于 2012-06-05 12:07:12
中文和日文字符不能使用ASCII字符串编码是很自然的。如果您试图通过Apple的方法转义字符串,那么一定要将结果存储为Unicode字符串,以避免代码重复。使用以下编码之一:
NSUTF8StringEncoding
NSUTF16StringEncoding
NSShiftJISStringEncoding (not Unicode, Japanese-specific)发布于 2012-06-01 02:05:55
您可能想看看stringByAddingPercentEscapesUsingEncoding和stringByReplacingPercentEscapesUsingEncoding方法。
编码示例(使用ASCII):
NSString* encodedString =
[originalString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];解码示例(使用ASCII):
NSString* originalString =
[encodedString stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];编辑:如果这样做不能得到想要的结果,请尝试用NSUTF8StringEncoding替换NSASCIIStringEncoding。
此外,您可能希望尝试上述方法的变体:
NSString * encodedString =
(NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)originalString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8 );在某些情况下,哪个会工作得更好?
https://stackoverflow.com/questions/10838702
复制相似问题