Не удается передать специальные символы в NSTask

В Cocoa я хотел бы передать строку, содержащую специальные символы, в NSTask в качестве аргументов, однако задача не получает правильную строку.

NSString *city=@"Zürich"; // This is the string with a special character
[arguments addObject:[NSString stringWithFormat:@"-iptc:city=%@",city]];

NSTask *task=[NSTask new];
[task setLaunchPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"exiftool"]];
[arguments addObjectsFromArray:[NSArray arrayWithObjects:@"-L",@"-overwrite_original_in_place",@"filename", nil]];

[task setArguments:arguments];
[task setStandardOutput:[NSPipe pipe]];

[task launch];

Задача получает в качестве аргумента не Цюрих, а Цюрих. Любая идея, как правильно передавать строки со специальными символами? Я пробовал UTF8String, но безуспешно. Спасибо.


person Laurent Crivello    schedule 22.05.2014    source источник
comment
Какую кодировку exiftool ожидает для своих аргументов? Это работает, если вы выполняете ту же команду из командной строки?   -  person Martin R    schedule 23.05.2014
comment
Из командной строки результат идеальный, т.е. он правильно получает и анализирует «Цюрих».   -  person Laurent Crivello    schedule 23.05.2014
comment
Я попробовал этот код с командой /bin/echo, и он правильно воспроизводит строку Zürich. (имеется в виду, что я использовал [task setLaunchPath:@"/bin/echo"])   -  person Mike Mertsock    schedule 23.05.2014
comment
Итак, есть идеи, как правильно exiftool интерпретировать ü ?   -  person Laurent Crivello    schedule 23.05.2014
comment
На самом деле я неправильно истолковал тест. Разбор командной строки тоже НЕ работает... и нашел проблему. Был неправильный аргумент (-L), который мне пришлось удалить. Спасибо !   -  person Laurent Crivello    schedule 23.05.2014
comment
@LaurentCrivello, если это решило вашу проблему, вы должны опубликовать это как ответ и принять его. В противном случае вы потеряете очки репутации.   -  person Abhi Beckert    schedule 23.05.2014


Ответы (1)


Аргумент -L в exiftool заставлял использовать латинский набор символов. Удаление заставило его работать правильно.

person Laurent Crivello    schedule 10.06.2014