对不起,也许是一个新手问题。
由于各种原因,我被一个看起来像这样的特殊字符串卡住了:
NSString *myString = @"A\\314\\212A\\314\\210O\\314\\210.jpg";
我可以以某种忍者的方式删除双 \\ 并强制 NSString 了解该字符串是统一编码的,应该像这样读取
NSString *myString = @"A\314\212A\314\210O\314\210.jpg"; // Displays ÅÄÖ as expected
我尝试了不同的策略尝试替换所有斜杠(“\”),但只要我添加一个(“\”)NSString 就会添加另一个来逃避第一个。我被困在这里...
是否可以防止 NSString 转义我的字符串?
更新
我知道这是一个特例。从读取用户驱动器上的文件的终端程序读取输出。通过 NSTask,我将输出捕获到 NSString 中,以便解析并将其拆分为数组。只要没有非ASCII字符,它就可以很好地工作。HFS+ 使用称为 NFD 的稍微不同的 Unicode 对非 ascii 字符进行编码。
当我捕获响应时,ÅÄÖ 已经在 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 总是捕获和转义 \。
任何提示 och 点表示赞赏!