0

iOS アプリで、サーバーから画像をダウンロードしています。サーバー上のすべての画像について、その URL (パス) を取得し、ログに記録してから、配列に追加します。私の問題は、サーバー上の 1 つの画像のファイル名自体に引用符が含まれていることです。したがって、次のように 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%22画像%5c%22.jpeg

それで、私の質問は次のとおりです。「 http://server.com/folder/ 」の出現箇所を置き換えるだけなのに、ログに記録した URL と表示名が異なるのはなぜですか。これを修正するにはどうすればよいですか?

私はどこでも答えを探しましたが、役に立つものは何も見つかりませんでした!

更新: これは多くの文字 (<、> など) で発生することに気付きました。

4

2 に答える 2

1

それがURLエンコーディングです。次のようにして、必要なものを取得できます。

[encodedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
于 2013-07-30T01:27:59.190 に答える
1

NSURLメソッドを使用する可能性が最も高いように思えます-lastPathComponent。URL を適切に分解し、プロセスの一部としてエスケープ解除を実行します。

于 2013-07-31T14:50:22.617 に答える