阻止NSString转义内容

时间:2015-05-27 21:07:51

标签: objective-c nsstring nsstringencoding

对不起,也许是一个新手问题。

出于各种原因,我遇到了一个看起来像这样的特殊字符串:

NSString *myString = @"A\\314\\212A\\314\\210O\\314\\210.jpg";

我可以在某些忍者方式中删除double \\并强制NSString了解该字符串是Uniencoded并且应该像这样读取

NSString *myString = @"A\314\212A\314\210O\314\210.jpg"; // Displays ÅÄÖ as expected

我尝试过尝试替换所有斜杠(“\”)的不同策略,但是只要我添加一个(“\”),NSString就会添加另一个以逃避第一个斜杠。我被困在这里......

是否可以阻止NSString转义我的字符串?

更新

我知道这是一个特例。读取终端程序的输出,该程序读取用户驱动器上的文件。通过NSTask我将输出捕获到NSString中进行解析并将其拆分为数组。只要没有非ascii字符,它就能很好地工作。 HFS +编码非ascii字符,其名称略有不同,称为NFD。

当我捕获响应时,ÅÄÖ已经在这样的qoutes中编码:

file.jpg
file2.jpg
"A\314\212A\314\210O\314\210.jpg"

当我创建一个NSString并使用捕获的响应时,它会被NSString第二次转义。

A\\314\\212A\\314\\210O\\314\\210.jpg

我知道这不是最佳选择,但现在我无法控制终端程序输出的内容。通常,当使用此NFD编码创建NSString时,Objectiv-C会为您处理编码/解码。但是因为我有一个带有混合和双重转义内容的字符串,所以我很难创建它并让NSString理解内容是用这种编码编码的。

基本上我想这样:

decodedString = [output stringByReplacingOccurrencesOfString:@"\\\\"
                                                      withString:@"\\"];

但是在幕后NSString总是为了另一个\而逃避\所以我想要一种方法来创建“原始”字符串而不会出现NSString干扰。

尝试了各种方法来尝试在NSString上强制执行Unicode编码,但这一切都归结为NSString总是捕获和转义\。

任何提示点赞赏!

1 个答案:

答案 0 :(得分:0)

除了反过来改变终端程序的输出而不是用这种方式编码,我没有找到任何方法。