对不起,也许是一个新手问题。
出于各种原因,我遇到了一个看起来像这样的特殊字符串:
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总是捕获和转义\。
任何提示点赞赏!
答案 0 :(得分:0)
除了反过来改变终端程序的输出而不是用这种方式编码,我没有找到任何方法。