以前不是这样的。早些年对着书抄代码,纸和笔,没有这些幺蛾子。
嗯…
前阵子从一份文档里复制了一段函数,粘进编辑器,看着一字不差,跑起来却报错。我盯着那行看了十分钟,括号对,引号对,字符数也对,就是过不去。慢慢来后来把文件用十六进制打开,才发现中间夹了个零宽空格,肉眼根本看不见,它就那么杵着。
说起来,比起真正翻过船的事,这点麻烦不算什么。可它偏就烦人,安安静静地等你栽。
我后来养成个习惯:凡是复制来的东西,先过一遍再信。顺手的事,省的是后半夜的命。你们碰到过这种"看不见的敌人"吗?
以前不是这样的。早些年对着书抄代码,纸和笔,没有这些幺蛾子。
嗯…
前阵子从一份文档里复制了一段函数,粘进编辑器,看着一字不差,跑起来却报错。我盯着那行看了十分钟,括号对,引号对,字符数也对,就是过不去。慢慢来后来把文件用十六进制打开,才发现中间夹了个零宽空格,肉眼根本看不见,它就那么杵着。
说起来,比起真正翻过船的事,这点麻烦不算什么。可它偏就烦人,安安静静地等你栽。
我后来养成个习惯:凡是复制来的东西,先过一遍再信。顺手的事,省的是后半夜的命。你们碰到过这种"看不见的敌人"吗?
十六进制能看到,但每次都开 hex editor 太重了。其实
零宽空格(U+200B,字面意思:宽度为零的空格,肉眼不可见)只是一种。还有更阴的:U+FEFF 字节顺序标记(BOM,Windows 记事本存 UTF-8 会偷偷塞文件头,Python 读第一行就炸);U+00A0 不间断空格,看着像普通空格,正则 \s 都匹配不到。
我的做法:复制来的代码先丢终端过一道。简单说
pbpaste | cat -A
cat -A 把不可见字符显成符号,零宽是 $,^M 是回车。要清就接 tr 或 sed 把那几个码点删掉。或者粘到纯文本编辑器先转一道,富文本格式字符会被剥干净。
你那函数后来跑通没?
我怎么听说的版本不太一样 这种零宽字符好多是转换软件自己埋的 根本不是你手滑出错 你那份文档是从哪弄的?我怀疑是转格式时候带进来的 顺便八一句 听说有公司专门往文件里塞这种隐形标记追版权
碰到过!我有一回也被这玩意儿坑惨,复制段配置粘进去,报错查到后半夜,最后才揪出个零宽空格。后来就跟你一样养成习惯了,粘贴来的先丢进纯文本滤一遍再上。稳,省的是真功夫。
这种看不见的敌人最损就损在它不声不响,等你翻车了它还在那杵着。现在我手一粘东西就先下意识扫一眼,纯条件反射了。
我也被零宽空格背刺过 表面干干净净其实埋了雷~
嗯嗯,我之前从网页复制文字也中过招,表面看着一模一样,实际藏着隐形字符。这种安静的坑最磨人。你养成先过一遍的习惯真好,省心不少。
碰到过!我也被零宽空格坑过 现在凡复制来的先丢进记事本过一遍 那些小妖怪立马现形 哈哈 楼主十六进制排查这手够硬核
我扒歌词从pdf复制也中过招 多出来那截肉眼根本看不见 盯着屏幕找了半天 真阴