我正在通过NSTask运行lsof,通过管道输出并读入NSData。然后,我用以下数据创建NSString:

[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];


我看到的问题是NSTask如何解释特殊字符。对于名称为!@#$%^±^&*()ľščťžýáíé.docx的文件
我得到以下结果:!@#$%^\xc2\xb1^&*()l\xcc\x8cs\xcc\x8cc\xcc\x8ct\xcc\x8cz\xcc\x8cy\xcc\x81a\xcc\x81i\xcc\x81e\xcc\x81.docx
好像用十六进制编码值分解了UTF8。不幸的是,我找不到将其转换为正确的UTF8的方法。

最佳答案

我发现将环境变量LC_ALL设置为en_US.UTF-8可以解决问题。

[task setEnvironment:@{@"LC_ALL" : @"en_US.UTF-8"}];

关于macos - NSTask输出特殊字符转换为UTF8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32605872/

10-12 01:47