又碰到一个奇葩的BUG​,注意标题

简介: 问题到这里其实很清晰了,前后端在注册的时候肯定遗漏了这个校验的逻辑,补上即可。

最近线上发生了一个问题,同事找我说有个用户名字不对,正则验证不通过。

于是我就去数据库查询看了下这个用户的名字信息,就长这个样子。

8669c14a220835b4b4bb619f79286076.jpg

没仔细看好像没啥问题啊,但是认真看了两遍发现好像不太对,怎么这个字这么宽呢?

我靠,这塔喵的是好像是全角啊!

具体原因就是因为插入的名字是全角的,导致其他地方调用接口取名字用正则判断不通过。

修复这个问题很简单,重新用半角的字体更新一下名字就可以了,另外前端是有校验的,后端没有用正则做校验,需要补上这个校验逻辑。

但是这个问题就很奇怪,这个全角和半角难道没有校验的吗?

带着好奇,我特意测试了一下淘宝、腾讯和头条的注册,看是不是可以保存全角。

首先试了下淘宝,红框中我输入的是全角的手机号,很明显全角是不行的。

image.png

再试试QQ注册,发现也是不可以的,这很好,大家都不要全角的。

image.png

QQ注册

问题到这里其实很清晰了,前后端在注册的时候肯定遗漏了这个校验的逻辑,补上即可。

我再测试了一下匹配英文的正则:

var p = /^[A-Za-z0-9]+$/g
p.match('qqq') //输出true
p.match('qqq') //输出false

所以建议大家没有对手机号、名字之类做校验的可以补上一个正则的校验,防止落库的数据是全角,避免坑爹。

这个会引发很多问题,比如如果全角保存的手机号,调发送手机验证码接口,别人校验的是半角的规则,你发送验证码都该报错了!

问题都说完了,不妨再了解下到底什么是全角?什么是半角?

用过输入法大家肯定都见过,但是具体的区别可能还真不知道。

在GB/T 9851.2-2008《印刷技术术语 第二部分:印前术语》中有对应的解释:

2.31 全角 em 排字的度量单位,宽度等于所使用的文字的磅数(point),用作排版宽度水平方向的度量。

2.32 半角 en 排字的量度单位,宽度等于同一磅数全角的一半。

大家都知道,我们中文字体都是方块字,包括排版也是一样,所以我们的汉字一个字的宽度是一样的。

但是在英文里就不一样了,一个英文字母的宽度可能是不一样的,所以全角/半角的概念诞生就是为了英文而服务的。

它要表达的意思很简单,就是代表字体宽度的概念而已。

而实际上,全角/半角这个概念来源于日本,在日文中,角的意思就是正方形,所以全角/半角的含义就是整个正方形/半个正方形的意思。

这个还有很多叫法,比如全身/半身,港台地区叫全形/半形,但是无论怎样,这些称呼都是在印刷行业的里术语称呼。

但是后来,随着计算机的发展,好像咱们科技界的人不太懂这玩意儿,直接把全角/半角搬过来用了,于是就形成了现在我们知道的局面。

我们都知道,最开始的时候为了映射二进制和英文字母的关系,有了ASCII码,它只有1个字节,最多也只能表达256个符号,而且英文也没用完,只用了128个。

但是对于中文和很多其他语言来说,256个符号肯定是不够用的,那咋办呢?那就只能用两个字节了。

所以,随着用户的使用习惯,逐渐习惯地把全角当成双字节的中文、韩文,半角当成英文这样子。

在计算机发展初期的时候,全角/半角的概念大概就等同于单字节/双字节这样的含义,另外还有一层含义就是我们上面说过的表示宽度,全角表示占用排版的宽度是半角的一倍。

当然了,随着计算的发展,又诞生了GB2312、GBK,Unicode、UTF-8这些编码,比如GBK中文英文都是两个字节,UTF8下文中3个字节,现在的全角/半角的概念就和占用存储空间大小没有任何关系了。

所以总结下来啊,全角/半角的称呼来源日文,但是被错误的直接带入了科技界(印刷界的人说我都不知道你们这么牛逼),最初的时候全角/半角就是代表宽度的含义,也被约定俗成地赋予了双字节/单字节的含义,现在来看它只能用户描述宽度更为合适一点。

还有啊,做好代码的参数校验,这个落库了就麻烦了,否则还得跟我一样去刷一遍数据!


相关文章
|
6月前
|
前端开发 算法 JavaScript
2025年阿里招聘已放出,标题没错,就是2025年
机会总是留给有准备的人,话都懂,但真正做到,你至少领先80%的人,先说一个事,就在昨天,V哥帮公众号里的一个用户远程做了沟通,这位女生是长春某一本学校的在读大三学生,将于2025年毕业,从公众号里找到了V哥,暂且称她为小曦。
110 0
|
6月前
|
JavaScript
【HTML特效程序】① 给女神表白的程序(让女神看科技烟花),输入名字自动生成表白二维码
【HTML特效程序】① 给女神表白的程序(让女神看科技烟花),输入名字自动生成表白二维码
45 0
|
前端开发 JavaScript
标题字闪光效果
标题字闪光效果
47 0
|
前端开发 JavaScript
零基础10天学会网页制作第二天(中)之属性和a标签介绍
上半部分呢,主要讲述的是路径的选择,这个是至关重要的,前边也说过,路径不仅仅局限于图片的选择,以后的css,javascript,以及网页的跳转等等,都会牵扯到路径,所以,才花费了较大篇幅去阐述,也希望大家能够引起重视。
121 0
|
存储 自然语言处理 JavaScript
产品让我限制一下输入框字数,结果我搞了3天没搞明白
作为一名新人er,看到自己的文章列表空空如也总觉得不是那么回事。但是想动手写点什么吧,脑子里实在又憋不出什么料。写一篇正儿八经的技术文章真的是好难好麻烦,尤其是看了首页推荐的大佬文章,更是觉得自己那点东西就别拿出去丢人了。有充分借口的日子总是短暂而且美好。这不,就在不久前的一次组会上,老大们又提起了”写点什么“的事儿,并且一再强调,不需要写出个什么宏文出来,写点什么都行。你看这台阶都给到这了,不下
|
前端开发 JavaScript
前端工作总结97-修改省略号
前端工作总结97-修改省略号
97 0
前端工作总结97-修改省略号
|
前端开发
前端工作总结206-显示省略号
前端工作总结206-显示省略号
72 0
前端工作总结206-显示省略号
|
SQL 算法 数据挖掘
[这是个无比吸引人的标题+文末彩蛋]
[这是个无比吸引人的标题+文末彩蛋]
|
前端开发 搜索推荐
【博客美化】01.推荐和反对炫酷样式
【博客美化】01.推荐和反对炫酷样式
【博客美化】01.推荐和反对炫酷样式
让网站标题变得可可爱爱
Hello!之前在浏览网页时,发现这样一个效果,就是我在当前网页,网页标题是这样,当我离开这个网页去浏览其他网页时,之前那个网页的标题发生了变化,真的非常的Q爱啊🤣,今天就把这个实现分享给大家,冲压,🚀
99 0
让网站标题变得可可爱爱