0

2ofsjw0234lnc.jpg\t2m03fcsmaokwf.jpg\nurl パラメータとしてエンコードしたいコンテンツがあるので、以下のようなコードを使用します。

NSString * attachsString = [_attachments stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

出力は2ofsjw0234lnc.jpg%5ct2m03fcsmaokwf.jpg%5cn 私が望んでいたものではありません2ofsjw0234lnc.jpg%092m03fcsmaokwf.jpg%0d%0a、エスケープ文字は私が望んでいたように変換されません。「\」のみが変換されています。

それで、あなたは何をアドバイスできますか?

4

1 に答える 1

0

\t文字列リテラルを入力すると、コンパイル時にタブに変換されます。次に stringByAddingPercentEscapesUsingEncoding:、タブをに変換します%09。ただし、実行時に文字列に 2 つの文字が含まれて\tいる場合、これは他の 2 つの文字と同じように扱われます。この場合、 はstringByAddingPercentEscapesUsingEncoding:単純にバックスラッシュを見て、それを に変換し%5cます。

\t実行時に文字列 (文字ではなく)または文字列を変換する場合\nは、次を使用する必要があります。

// note the double backslash for the tab
string = [string stringByReplacingOccurrencesOfString:@"\\t" withString:@"%09"];

に対して繰り返し\nます。

于 2012-10-31T16:23:26.620 に答える