首页 文章详情

从 "�" 到 "锟斤拷",这都是些啥玩意?

python之禅 | 11436 2021-02-24 18:46 0 0 0
UniSMS (合一短信)

来源 | 程序猿石头

作者 | 石头哥
以一首七言绝句作为开篇,你知道背后说的是什么吗?

手持两把锟斤拷,

口中疾呼烫烫烫。

脚踏千朵屯屯屯,

笑看万物锘锘锘。

� 为何物?

其实,这个 “” 真是无处不在,比如大名鼎鼎的微信:

微信中的�

再比如,封面图中,单价22元的“锟斤拷锟斤拷”,再随便百度一把:

随处可见的�

要弄清这个问题,还得先从编码谈起。

因为在计算机的眼里,都是二进制,具体用哪些二进制数字表示哪个符号,这就是编码。不要把编码想象得太复杂,其实就是一个很简单的 mapping。

比如大家所熟知的 ASCII 编码,规定了二进制的0100 0001,也就是十进制的65,代表的含义就是大写字母 A

ASCII 编码

 也是一种编码字符,就跟上面的 A 一样一样的,它是 UNICODE 编码方式中的一个特殊的字符,也就是 0xFFFD(65533),语义是一个占位符,用来表达这套编码系统中未知的、自己不认识的东西。

比如下面的实验截图,红色部分圈出来的对应的字符,UTF-8 编码都不认识,所以按照 UNICODE 的定义,就只好用统一的一个占位符 —— 0xFFFD(65533) 来表示。

为什么会出现“锟斤拷”?

我们接着来看, 如下图所示,仍然从 “程序猿石头” 对应二进制编码截取部分:

上图中,第 18 行的字节数组 new byte[] {-25, -119, -25, -116}UTF-8 恰好都不认识,因此只能用占位符替换。

这种情况,在编码转换过程中确实也比较常见,如果双方没沟通清楚,确实很容易出现互相不认识的情况。

在中文系统中,常见的字符编码是 GBK,这个时候,因为大家没提前商量清楚,我就默认按照 GBK 给你编码看看。

“锟斤拷”在此

惊不惊喜意不意外……

其实是因为, 用 UTF-8 编码后变成了 0xEFBFBD(就是上面的字节数组 [-17, -65, -67]),两个连起来就是 0xEFBFBDEFBFBD,也就是上面的字节数组[-17, -65, -67, -17, -65, -67]

而 GBK 编码依然采用双字节编码方案,因此上面的 6 字节 0xEFBFBDEFBFBD,就被拆成了 3 个 2 字节字符即 0xEFBF, 0xBDEF, 0xBFBD 对应 GBK 编码里面就是:锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。

锟斤拷(可向右滑动

现在,你知道了吗?

最后,你知道开篇的五言绝句,另外的梗是来自哪里吗?

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter

    零柒月信托排名2022山西百强企业排名2022济南好用的网站建设公司针灸推拿专业考研学校排名灯具品牌排行前十名都有哪些牌子神话剧情介绍网页页脚设计代码手表网站建设建设企业网站的三种模式网页 视频下载自吸泵品牌十大排名网线排名前十的品牌电脑网页怎么扫描二维码okki 网页版烟台正宗网站建设公司p大树洞网页版ca4126胶州电商网站建设设计专业排名招商网站建设地点影响网站排名的因素住建局造价站工资待遇遵义医科大学录取分数线2021右下无锡网站建设少年天子之康熙王朝网页漫画下载软件激光头厂家排名建设网站需要什麽小程序 跳转到网页总是弹出网页广告广州南站被封、旅客滞留?官方回应死刑!劳荣枝案二审维持原判坚决筑牢疫情防控屏障伊朗队员跪地痛哭 美国球员摸头安慰世界杯历史首位女主裁街道工作人员上门打人 湖南浏阳通报宝沃汽车正式宣告破产媒体:足球传感器显示C罗未触球劳荣枝不服死刑判决庭上态度嚣张曾驰援武汉的“大葱哥”急需帮助欧阳娜娜自创品牌被指“割韭菜”老人养的近4000只鸭子被投毒乌克兰足协主席因涉嫌洗钱被捕“小馄饨皮”王子的父亲贝克汉姆在卡塔尔酒店房间内景曝光亚洲第一球星正在被韩国网民网暴金龙羽董事长郑永汉突发疾病去世四川一产妇医院门口产女上海收紧防控 部分区通知储备物资新冠奥密克戎毒力如何?官方回应劳荣枝案时间线知情人谈张核子:坐拥带停机坪别墅卡塔尔花2200亿进一个球,值吗?中央政法委:打击敌对势力渗透破坏广州番禺:解除所有防控临时管控区郎朗邀请内马尔四手联弹女孩被多人殴打强迫下跪 警方通报核酸机构造假频现 官方:严肃处置梅西已8年不喝汽水不吃披萨居家老人孩子可否少核检?官方答疑

    零柒月 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化