前两天调个接口死活不通,报错信息离谱得一批。对着那段 curl 命令盯了半小时,肉眼看每个字符都对,复制出来逐字比对也没差。
怎么说
最后发现是复制网页时带进来一个零宽空格(U+200B),命令行直接把它当普通字符塞进了 header。肉眼看不见,编辑器不高亮,git diff 更是完全看不出,纯纯的 ghost character。
卧槽
类似的还有全角空格、BOM 头、不间断空格(U+00A0)。最阴的是从 Word 或者网页富文本里粘代码,这些玩意儿成群结队混进来,编译期不报错,运行时才翻脸。
现在养成习惯了,凡是复制来的代码先 cat -A 过一遍,或者直接丢十六进制看。还有个笨办法,把可疑那行删了手敲一遍,基本一敲就好。
你们踩过这种看不见的坑没,说出来让我平衡一下(