stringByAddingPercentEscapesUsingEncoding添加意外字符?

时间:2013-05-06 21:37:12

标签: nsstring nsurl nsstringencoding

我很难让NSURL工作,当我在转换为URL之前创建最终字符串时,它会在字符串末尾添加不需要的字符,为什么会发生这种情况,我该如何解决?

这是我的代码:

NSString *remotepathstring = [[NSString alloc] init];
remotepathstring=newdata.remotepath;
NSLog(@"remotepathstring = %@",remotepathstring);

NSString *remotepathstringwithescapes = [remotepathstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"remotepathstring = %@",remotepathstringwithescapes);

remotepathURL =[NSURL URLWithString:remotepathstringwithescapes];
NSLog(@"RemotePathUrl=%@",remotepathURL);

记录输出如下:

"remotepathstring = http://nalahandthepinktiger.com/wp-content/uploads/nalah-sheet-5.pdf‎"

"remotepathstring = http://nalahandthepinktiger.com/wp-content/uploads/nalah-sheet-5.pdf%E2%80%8E"

"RemotePathUrl=http://nalahandthepinktiger.com/wp-content/uploads/nalah-sheet-5.pdf%E2%80%8E"

1 个答案:

答案 0 :(得分:0)

序列%E2%80%8E是Unicode LEFT-TO-RIGHT MARK。这在您的原始remotepathstring中有效,但在通过NSLog打印出来时不可见。

问题变成:newdata.remotepath首先如何填充?沿着这条线的某处,听起来你需要对输入字符串进行一些额外的清理以去除这样的字符。

与核心问题无关,似乎你是Objective-C的新手。这段代码多余且浪费:

NSString *remotepathstring = [[NSString alloc] init];
remotepathstring=newdata.remotepath;

您创建一个字符串,只是立即将其丢弃并将其替换为另一个字符串。如果您不使用ARC,则会出现额外的泄漏问题!而是做:

NSString *remotepathstring = newdata.remotepath;