likes
comments
collection
share

开发踩坑--零宽字符

作者站长头像
站长
· 阅读数 18

背景

周五把代码传 stg 环境上了,当时云真机上测不出来,后端说没啥问题,我就把后端真机的录屏放群里然后 @测试 去测了。

周六!!!

周六测试给我发了第二个视频无法加载的图片,我 tm 当时就是心里一紧,马上就要离职了怎么这么多 bug(烦死了烦死了

伤 day 我看了一下这个问题,没看出明显问题,于是开始摆烂。

开发踩坑--零宽字符

今天被抓起来继续看这个问题,然后查前端封装,查后端链接,然后啥都没查出来,当时就想摆烂了...

问题

问题大致是这样:

  1. 我们视频的链接有问题,导致展示 error 。
  2. 后端传过来的链接没问题。
  3. 前端这边没有对传过来的 url 做任何的特殊处理。

解决

在组里摇人,摇到了 debug 的神

开发踩坑--零宽字符

然后我把我的链接发过去了,二维码也发过去了,过了 20min ,神解决了!!!

他给我了以下截图并发了一句话:

后台接口返回的url链接多了不可见字符,该不可见字符可能来源于飞书复制

开发踩坑--零宽字符

然后我和后台同学去沟通,发现数据库里的链接确实有这么个东西,我们删除之后,这个问题也就解决了。

开发踩坑--零宽字符

背后是啥问题?

首先介绍一下零宽字符:

203 零宽字符是 Unicode 中的一种特殊字符,其编号为 U+200B。这种字符在文本中出现时,通常不会被显示出来,因为其宽度为零。这也是其名为“零宽字符”的原因。

8203 零宽字符通常被用于文本处理中的一些特殊用途。其中,最常见的应用就是为文本中的某些部分添加格式或标记。例如,在 HTML 中,开发者可以使用零宽字符将某些文本标记为粗体或斜体,而这些标记本身并不会被显示出来。另外,零宽字符也可以被用来在文本中插入空格或换行符等特殊字符,而这些字符本身无法直接输入。

除了上述应用外,8203 零宽字符还被用来帮助解决某些文本处理中的问题。例如,在某些情况下,文本中可能存在不可见字符或空格,这些字符会对文本的处理和解析带来问题。而在这些情况下,开发者可以使用零宽字符来代替这些不可见字符,从而避免文本处理的问题。

那后端那个<0x200b>是个啥玩意呢?

<0x200b> 是 8203 零宽字符的十六进制表示,也就是说这个表示方法和直接使用 U+200B 是等价的。

在一些字符处理软件或编程语言中,可能会使用这种十六进制表示方法来操作或表示这个字符。例如,在 Python 中,可以使用 "\u200b" 或 "\u200B" 来表示 8203 零宽字符,而 "\u200b" 和 "\u200B" 实际上是表示相同的字符的两种方式。

需要注意的是,不同编程环境中可能对这种字符的处理方式不同。在某些情况下,这种特殊字符可能会被忽略或处理不当,从而带来错误或安全问题。因此,在进行字符处理时,我们需要对特殊字符进行充分的测试和验证,确保其能够被正确处理和解析。

那么我那个问题之所以会发生,就是因为在飞书中复制粘贴的时候产生了零宽字符,从而产生了 bug。

那么这就是本篇文章的全部内容啦。

如果对你有帮助的话,能不能帮我点个赞呀~

转载自:https://juejin.cn/post/7243727090923585573
评论
请登录