NSTask字符串编码问题

时间:2010-03-28 18:09:33

标签: cocoa encoding nstask

在我的计划中,我正在通过NSTask进行抨击。出于某种原因,有时候我没有得到任何结果(即使代码显然与从CLI运行的命令运行得很好),所以我检查了我的代码,并在Apple的文档中发现,在添加参数时一个NSTask对象,“NSTask对象将参数中的路径和字符串转换为适当的C样式字符串(使用fileSystemRepresentation),然后通过argv []”(snip)将它们传递给任务。

问题在于我可能会像“RíoGallegos”这样的术语。可悲的是(正如我用fileSystemRepresentation检查的那样)经历了转换,结果证明是“RiÃÅoGallegos”。

我该如何解决这个问题?

- Ry

1 个答案:

答案 0 :(得分:1)

  

问题在于我可能会像“RíoGallegos”这样的术语。可悲的是(正如我用fileSystemRepresentation检查的那样)经历了转换,结果证明是“RiÃÅoGallegos”。

这是一种可能的解释。你的意思是“RíoGallegos”转换为“Ri \xcc\x81 o Gallegos” - UTF-8字节代表分解的i +组合锐音。

你的问题是grep没有将这些字节解释为UTF-8。 grep正在使用其他一些编码 - 显然是MacRoman。

解决方案是告诉grep使用UTF-8。这需要在grep任务的environment中设置LC_ALL变量。

使用的快速和脏的值是“en_US.UTF-8”;更合适的方法是获取用户主要preferred language的语言代码,用下划线替换连字符(如果有的话),并在结尾处粘贴“.UTF-8”。