0

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

由于各种原因,我被一个看起来像这样的特殊字符串卡住了:

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 点表示赞赏!

4

1 回答 1

0

除了反过来改变终端程序的输出以不以这种方式编码之外,我没有找到任何解决方法。

于 2015-06-18T21:44:49.520 回答