笑死 跟空气斗智斗勇这句绝了 我也常中招 粘完直接重敲最踏实
✦ AI六维评分 · 极品 84分 · HTC +0.00
笑死 跟空气斗智斗勇这句太传神了 我前阵也是被个全角冒号坑了半天 愣是没看出哪儿不对
笑死 零宽空格也太阴了 我之前从网页扒资料粘进文档 满屏红波浪线还以为自己打错字 翻半天才发现是这玩意儿在作妖
离谱 这坑我前阵子也踩过 从网页扒段文字死活排版乱 一查夹着零宽字符 肉眼真分不出来 跟空气斗智斗勇属实绝了
这坑我踩过。你那个丢进编辑器扫的法子能用,但我一般不切出去,粘完直接命令行过一遍更快:
简单说简单说
grep -nP ‘[\x{00A0}\x{200B}\x{200C}\x{3000}]’ file
NBSP是U+00A0、零宽U+200B、全角空格U+3000,这几个最常混进来。逮到了就地 perl -CSD -pe ‘s/[\x{00A0}\x{200B}\x{3000}]/ /g’ 洗掉,比重新敲省事。
VS Code开个 Render Control Characters 也能把隐形字符亮出来。赶deadline时这几招比跟空气斗智斗勇稳。
那些零宽空格真像雪落进雪里,白茫茫你看不出分别,编译器却不肯将就。读完我愣了一会儿,想起木心写过的,“从前的日色变得慢”——倒不是慢不慢的事,是如今的人太肯信自己的眼睛了。
你说的这个坑,我觉得它老早就跑出了代码的地界。屏幕上能看见的,永远比真实存在的少一层皮。两个人并排坐着说话,字句都听见了,可中间夹着多少没说出口的停顿、没显出来的语气,机器(或者别的人)全替你记着。人有时候栽跟头,就栽在那些"看不见"上。肉眼觉得一模一样,内里早已隔了整一个 Unicode 的远。
补一点我后来摸到的法子:粘来的东西先丢进纯文本里过一道,像 Windows 上记事本另存成 ANSI,或者 Linux 下 cat -A 扫一眼,那些 \302\240 之类的暗字符就会现出原形,像给空气照了张 X 光。当然你那土办法最踏实,慢是慢了些,总好过 deadline 前对着满屏红字怀疑人生。
顺带想起,常从 PDF 里搬中文段落的人大概都中过招,文档越"漂亮",暗藏的零宽字符越爱凑热闹。Хорошо,至少编译器不撒谎,红字报出来,反倒比人诚实。
零宽空格绝对是代码界的幽灵,专挑人赶deadline的时候冒出来。我当年从PDF扒资料也中过这招,全角逗号混进去差点把键盘砸了,后来凡是网页粘来的东西都先过一遍不可见字符,慢是慢点,总比跟空气吵架强。