首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在objective-c中对URL进行编码或解码

如何在objective-c中对URL进行编码或解码
EN

Stack Overflow用户
提问于 2012-06-01 01:53:45
回答 2查看 8.1K关注 0票数 3

有没有类似这样的东西

代码语言:javascript
复制
+(NSString *) URLencode: (NSString *) someString


+(NSString *) URLdecode: (NSString *) someString

如果是这样,如何实施呢?

向下投票的人请注意。这不是一个简单的问题。我需要一些东西,可以全面做到这一点。例如:

代码语言:javascript
复制
NSString * test = @"汉字马拉松是";
NSString * encoded = [test stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
PO(encoded);
PO(test);

将产生以下结果:

代码语言:javascript
复制
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(已编码);

按照预期工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-05 12:07:12

中文和日文字符不能使用ASCII字符串编码是很自然的。如果您试图通过Apple的方法转义字符串,那么一定要将结果存储为Unicode字符串,以避免代码重复。使用以下编码之一:

代码语言:javascript
复制
NSUTF8StringEncoding
NSUTF16StringEncoding
NSShiftJISStringEncoding (not Unicode, Japanese-specific)
票数 1
EN

Stack Overflow用户

发布于 2012-06-01 02:05:55

您可能想看看stringByAddingPercentEscapesUsingEncodingstringByReplacingPercentEscapesUsingEncoding方法。

编码示例(使用ASCII):

代码语言:javascript
复制
NSString* encodedString =
[originalString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

解码示例(使用ASCII):

代码语言:javascript
复制
NSString* originalString =
[encodedString stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

编辑:如果这样做不能得到想要的结果,请尝试用NSUTF8StringEncoding替换NSASCIIStringEncoding

此外,您可能希望尝试上述方法的变体:

代码语言:javascript
复制
NSString * encodedString =
  (NSString *)CFURLCreateStringByAddingPercentEscapes(
    NULL,
    (CFStringRef)originalString,
    NULL,
    (CFStringRef)@"!*'();:@&=+$,/?%#[]",
    kCFStringEncodingUTF8 );

在某些情况下,哪个会工作得更好?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10838702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档