iOS奇怪地读取一些字符?

时间:2013-07-30 00:46:18

标签: ios nsstring nsurl

在我的iOS应用中,我正在从服务器下载图像。对于服务器上的每个图像,我都会使用它的URL(路径),记录它,然后将其添加到数组中。我的问题是服务器上的一个图像在文件名本身中有引号。所以,当我像这样记录URL时:

NSLog(@"New file path reads: %@", /*path on server*/);

日志输出显示:

  

新文件路径为:http://server.com/folder/ \“Image \”。jpeg

这是预期的,因为(\“)转义码返回字符(”)并且文件下载正常。接下来,我使用文件的路径创建一个NSString来显示文件的名称。我这样做只是简单地替换文件名字符串中出现的“http://server.com/folder/”。对于所有其他文件,这完美地工作,例如如果我在路径上有一个文件:

  

http://server.com/folder/Test.jpeg

新显示名称为:

  

Test.jpeg

但是,当文件名/路径中包含引号时(如“Image”.jpeg),显示名称为:

  

%5C%22Image%5C%22.jpeg

所以,我的问题是:当我所做的只是替换“http://server.com/folder/”的出现时,为什么显示名称与我记录的URL不同?我该如何解决这个问题?

任何帮助都会非常感激,我到处寻找答案,但找不到任何有用的东西!

更新:我刚刚意识到这会发生很多字符(<,>等)

2 个答案:

答案 0 :(得分:1)

这是URL编码。你可以得到你想要的东西:

[encodedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

答案 1 :(得分:1)

听起来我很可能想要使用NSURL方法-lastPathComponent。它将为您正确拉出URL,并在此过程中执行转义。