我正在通过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/