ios stringByAddingPercentEscapesUsingEncoding转换未更正

时间:2012-10-31 16:13:04

标签: ios nsstringencoding

我有一些像2ofsjw0234lnc.jpg\t2m03fcsmaokwf.jpg\n这样的内容想要编码为url参数,所以我使用的代码如下所示。

NSString * attachsString = [_attachments stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

输出为2ofsjw0234lnc.jpg%5ct2m03fcsmaokwf.jpg%5cn 这不是我想要的,2ofsjw0234lnc.jpg%092m03fcsmaokwf.jpg%0d%0a,逃脱角色不是我想要的转换。只有“\”已被转换。

那你能给点什么建议呢?

1 个答案:

答案 0 :(得分:0)

如果将\t放在字符串文字中,那么在编译时,它会转换为制表符。然后stringByAddingPercentEscapesUsingEncoding:会将标签转换为%09。但是,如果在运行时,字符串具有两个字符\t,则不会将其与任何其他两个字符区别开来。在这种情况下,stringByAddingPercentEscapesUsingEncoding:只会看到反斜杠并将其转换为%5c

如果要在运行时转换\t\n字符串(不是字符),则应使用:

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

重复\n