gocoa格式为gmail atom feed的NSURL字符串

时间:2011-11-03 16:26:13

标签: cocoa encoding gmail

我正在尝试格式化url字符串以检索gmail原子提要但我遇到了问题。这是我的代码:

NSString *urlstring = [NSString stringWithFormat:@"https://%@:%@@gmail.google.com/­gmail/­feed/atom", username, userpass];
NSString *encodedString = [urlstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:encodedString];

这是我日志中的内容。

https://••••••••@gmail.com:•••••••••@gmail.google.com/%C2%ADgmail/%C2%ADfeed/atom

这 - >%C2%AD似乎是个问题。它应该只是一个斜线。知道如何清理它吗?感谢。

1 个答案:

答案 0 :(得分:2)

简答:

您的urlstring包含软连字符。

综合答案:

在以下代码withSoftHyphenswithoutSoftHyphens中看起来相同:

NSString *withSoftHyphens    = @"example/­example/­example";
NSString *withoutSoftHyphens = @"example/example/example";

NSLog(@"%@",[withSoftHyphens    stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);
NSLog(@"%@",[withoutSoftHyphens stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);

然而输出不同:
(通过复制和执行上述代码自行结账)

"example/%C2%ADexample/%C2%ADexample"
"example/example/example"

在对字符串进行编码后,软连字符基本上由%C2%AD表示。

来自维基百科的引用:

  

软连字符是一种用于在文本中指定位置的连字符   允许使用带连字符的断点而不强制换行   如果文本被重新流动,则不方便。

换句话说,您的urlstring包含软连字符 只需使用退格键删除/­g/­f,然后再次输入 请注意,您实际上需要三个退格键才能删除两个字符(/­g) - 第一个退格键删除了g - 第二个退格键删除了不可见的软连字符 - 第三个退格删除了/

总之,删除软连字符后,您的代码工作正常:

NSString *username = @"Anne";
NSString *userpass = @"Password";
NSString *urlstring = [NSString stringWithFormat:@"https://%@:%@@gmail.google.com/mail/feed/atom", username, userpass];
NSString *encodedString = [urlstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:encodedString];
NSLog(@"%@", url);

输出:

https://Anne:Password@gmail.google.com/mail/feed/atom