我正在尝试格式化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似乎是个问题。它应该只是一个斜线。知道如何清理它吗?感谢。
答案 0 :(得分:2)
简答:
您的urlstring
包含软连字符。
综合答案:
在以下代码withSoftHyphens
和withoutSoftHyphens
中看起来相同:
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