最近在用phabricator的时候有一个cpp文件被识别为bin文件了。查看之后发现上次push中有一个非utf-8字符,导致文件的编码格式变成了ISO-8859
1 | $ file test.cpp |
看看里头有哪些不是ASCII编码的,用iconv试着从ASCII转一下:
1 | $ iconv -f ASCII -t UTF8 test.cpp > output.cpp |
然后找到这个位置删除非utf8字符删除
之后被卡在了arc diff
命令上。本来向phabricator提交需要经过arcanist创建CR通过之后才能提交,但是此处arc一直提示文件有非utf-8字符,导致无法提交。
之前一直查文件的错以为是还有非utf8的字符,或者用:set fileencoding
在vim下检查是否编码还是不对。最后在https://secure.phabricator.com/T5229 找到了一个答案。说其实是之前的文件里有非utf-8字符导致的,由于要提交diff,自然之前的文件也被考虑在内,就有这个提示了。
然而直接强行push由于无法绕过master分支的arcanist。通过新建一个dev分支push之后merge进master,merge后可直接push绕过CR,之后在master上开发就会正常了。