前几天改一小段配置,死活跑不起来。两个字符串肉眼看一模一样,打印出来也一模一样,可一比较就判 false,我对着屏幕怀疑人生了半天。
后来把字符拆开一个个看,才发现是从网页复制值时,顺手把全角空格带进来了。半角和全角长得像亲兄弟,肉眼根本分不清,可它们在程序里是真不一样的两个东西。
抱抱
这种坑最磨人,因为它不报错,只是悄悄把你的逻辑整乱。以后只要遇到"明明一样却不相等",我先去查有没有看不见的字符。别担心,咱们都被这玩意儿坑过,下次长个心眼就好啦。
前几天改一小段配置,死活跑不起来。两个字符串肉眼看一模一样,打印出来也一模一样,可一比较就判 false,我对着屏幕怀疑人生了半天。
后来把字符拆开一个个看,才发现是从网页复制值时,顺手把全角空格带进来了。半角和全角长得像亲兄弟,肉眼根本分不清,可它们在程序里是真不一样的两个东西。
抱抱
这种坑最磨人,因为它不报错,只是悄悄把你的逻辑整乱。以后只要遇到"明明一样却不相等",我先去查有没有看不见的字符。别担心,咱们都被这玩意儿坑过,下次长个心眼就好啦。
抱抱楼主 这个坑太真实了 我之前弄个报名表也是 复制过来的名字死活匹配不上 翻了半天才发现中间藏了个不间断空格 这种看不见的东西最烦 不报错 就安安静静把你逻辑搅乱 哈哈 以后遇到"明明一样"我也先去查隐形字符
我以前捣鼓游戏那会儿,有回也撞上这种邪门事。不是空格,是utf-8文件头那个看不见的BOM,愣把解析整崩了,报错还报得没头没脑。
从那以后我就认了,肉眼这玩意儿靠不住。现在再遇着"明明一样却不对",我懒得跟它较劲,先丢进能显不可见字符的编辑器扫一眼,省得跟一团空气生半天气。
怎么说呢
你这还算走运,好歹把元凶揪出来了。有人折腾一整天才发现是中文引号混进去了,那才叫一个憋屈。
我听说有些网站是故意往复制出来的文字里塞这种看不见的字符的,你猜干嘛?嘛好像是用来记谁把内容转去哪了,等于埋个暗号做追踪。所以你这回说不定不是手滑,是那网页本身就有猫腻。
全角半角这俩货我也栽过跟头,前阵子填个表名字死活不对,最后发现多了个全角空格。你们知道吗,有些输入法一切换就给你整成全角,防不胜防。
怎么说
你那配置最后是揪出来删掉的,还是干脆整段重敲了一遍?
这种看不见的字符最会糊弄人。我年轻那会儿有回从网页上扒了段配置,怎么配都不生效,对着屏幕坐了一晚上。后来一行行拆开比,才看见文件头藏了个 BOM,三个字节的玩意儿,肉眼永远逮不着。从那往后,但凡碰上"长得一样却不对劲"的,我第一反应就是把字符串当字节瞅瞅,比干瞪眼强得多。仔细想想你这个全角空格还算客气,起码占着个位置,真遇上零宽字符那才叫闷声坑人。
辛苦了,对着屏幕怀疑人生那半个钟头真的太磨人了。
我跟这玩意儿也算老相识了,之前还专门发过帖吐槽全角空格是我的毕生之敌(草)。说起来在东京待久了反倒有点因祸得福——日文排版里全角空格本来就用得勤,汉字和半角英文之间习惯塞一个,所以我现在看到哪儿排版别扭,第一反应就是去查是不是混进了隐形字符。
不过刚来日本那阵子也照样被坑过,有回从网页复制个词进编辑器,死活对不上,气得我。现在我的土办法是先把两个串的 length 比一下,或者写个小循环把每个字符的码点打出来,基本一抓一个准。
没事的楼主这回算是把这坑踩明白了,下次准能一眼揪出来。加油
我之前发过一帖就叫"全角空格,我的毕生之敌",看来这玩意儿是真不分对象地坑人。最气人的是它不报错,安静得像什么都没发生,等你想起来查已经是半小时之后了。我现在凡是从网页和微信里粘东西,都条件反射先过一遍正则把\s替换掉,治标不治本但能保命。你这运气还算好,至少拆字符就找到了,有人能跟这bug纠缠一下午。
我之前在版里发过一帖就叫"全角空格,我的毕生之敌",看来咱俩拜的是同一个仇人。对着屏幕怀疑人生那半个钟头太真实了,这种坑最阴的地方就是不报错,安安静静把你逻辑搅乱,你还先把自己脑子给否了。后来我也学乖了,遇到"明明一样却不相等"先去扒一层看不见的字符。不过说真的,全角半角长得跟双胞胎似的,谁绷得住每次都拿放大镜看啊,草。
读你这段,忽然想起小时候对着镜子发呆,镜子里的人和我对齐了每一个动作,可那到底不是我。你写的那个全角空格,像夹在我们和真实之间的薄雾,明明什么都没挡住,偏偏就让两样东西判了不等。
这种"看不见的差错"最让人心虚。它不声响,不报错,只是安安静静地,把你以为稳妥的东西挪了半寸。我也常撞上类似的事:从某个网页搬一段歌词进文档,排版看着好好的,传到别处却莫名其妙断了行、少了字。那时才懂,屏幕上最危险的东西,往往是那些"看起来什么都没有"的东西。话说回来
人大约也是这样。有时候两个人念着一模一样的词,中间却藏着各自没说出口的全角空格,于是"理解"和"理解"判了false,谁都觉得委屈。倒也不必懊恼,就像你说的,长个心眼就好。下次再遇到对不上的时候,先别急着怀疑自己,蹲下来,把每个字符、每句没说尽的潜台词,都拆开看看。
全角空格这货太会演,肉眼看着人畜无害,背地里把逻辑搅黄。我也栽过,对着屏幕怀疑人生。
对着屏幕怀疑人生那半天,光看描述我都能感觉到那种无力。最磨人的就是它不报错,安安静静把你逻辑带歪,还得自己一个个字符去揪出来。
我平时复制粘贴也老踩这种看不见的雷,从网页或文档里粘段文字过来,换行、零宽字符什么的悄悄跟着跑,整理半天才定位到根儿上。所以现在只要碰到"明明该一样却不对劲",我也先去查那些藏起来的符号 ( ̄▽ ̄)