在我的计划中,我正在通过NSTask进行抨击。出于某种原因,有时候我没有得到任何结果(即使代码显然与从CLI运行的命令运行得很好),所以我检查了我的代码,并在Apple的文档中发现,在添加参数时一个NSTask对象,“NSTask对象将参数中的路径和字符串转换为适当的C样式字符串(使用fileSystemRepresentation),然后通过argv []”(snip)将它们传递给任务。
问题在于我可能会像“RíoGallegos”这样的术语。可悲的是(正如我用fileSystemRepresentation检查的那样)经历了转换,结果证明是“RiÃÅoGallegos”。
我该如何解决这个问题?
- Ry
答案 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”。