1 分钟带你认识从 "�" 到 "锟斤拷"

作者 | 石头哥

来源 | 程序猿石头(ID:tangleithu)

以一首五言绝句作为开篇,你知道背后说的是什么吗?

手持两把锟斤拷

口中疾呼烫烫烫

脚踏千朵屯屯屯

笑看万物锘锘锘

� 为何物?

在前不久石头哥的这篇文章中 —— 你可能也会掉进这个简单的 String 的坑,讲述了因字符编码问题而连续踩坑的经历,文中有一个神奇的字符 “�”。

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

微信中的�
再比如,封面图中,单价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)。

锟斤拷(可向右滑动)

现在,你知道了吗?

留个作业题:开篇的五言绝句,你知道另外的梗是来自哪里吗?欢迎留言讨论。



☞壕!阿里开工红包惊人,最高 1000 万,有人却只收到一杯白开水
☞春节奖励“玩套路”?饿了么致歉!
☞谷歌称居家办公影响工作效率!2021 年将回归线下办公
☞雷军坚持了 10 年的东西,现在彻底凉了
点分享点收藏点点赞点在看
?UTF-8与GBK互转,为什么会乱码?
_古井心
10-18 15万+
作为一名程序员,肯定有被乱码困扰的时候,真到了百思不得其解的时候,就会觉得:英文程序员真幸福。 但其实只要明白编码之间的转换规律,其实乱码so easy~ 我们知道,计算机存储数据都是2进制,就是0和1,那么这么多的字符就都需要有自己对应的0和1组成的序列,计算机将需要存储的字符转换成它们对应的01序列,然后就可以储存在电脑里了。 比如我们可以定义用8位2进制表示一个字符,“00...
经典乱码
hooopo的专栏
03-20 2658
是什么?我也是最近才搞明白的。 http://www.baidu.com/baidu?word=%EF%BF%BD%EF%BF%BD http://www.google.com/search?hl=en&q=%E9%94%9F%E6%96%A4%E6%8B%B7 我考证了一下,这个乱码的原因来源相当经典。 Unicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表...
手持两把,口中疾呼烫烫烫。脚踏千朵屯屯屯,笑看万物锘锘锘
Hello world!
07-15 2万+
Unicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHARACTER。 那么U+FFFD的UTF-8编码出来,恰好是 '\xef\xbf\xbd'。如果这个'\xef\xbf\xbd',重复多次,例如 '\xef\xbf\xbd\xef\xbf\xbd',
特殊的ASCII码对应的字符
weixin_30408739的博客
08-24 1931
Special Characters " " " quotation mark u+0022 ISOnum p:before { content:"\0022"; } alert("\42") & & & ampersand u+0026 ISOnum p:before { co...
ASCII码对照表(十进制和十六进制)
weixin_30362233的博客
08-19 1万+
表 A-1 DEC 多国字符集 十六进制代码 MCS 字符或缩写 DEC 多国字符名 ASCII 控制字符 1 ...
手持两把, 口中疾呼烫烫烫, 脚踏千朵屯屯屯, 笑看万物锘锘锘
hao931126的博客
09-22 9278
的来历 GBK与UTF-8    Unicode和老编码体系的转化进程中,一定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHARACTER。 那么U+FFFD的UTF-8编码出来,恰恰是 "\xef\xbf\xbd"。假如这个"\xef\xbf\xbd",反复屡次,例如 "\xef\xbf\xb
使用枚举的正确姿势
Java旅途
09-19 374
枚举是JDK1.5引入的新特性。被enum关键字修饰的类就是一个枚举类。 关于枚举,阿里巴巴开发手册有这样两条建议: 枚举类名上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。 如果变量值仅在一个固定范围内变化用 enum 类型来定义。 一 枚举类有哪些特点 创建一个ColorEnum的枚举类,通过编译,再反编译看看它发生了哪些变化。 public enum ColorEnum { RED,GREEN,BULE; } 使用命令javac ColorEnum.java进行编译生成
是什么?
最新发布
whl0071的专栏
07-17 192
乱码之 烫烫烫
解决IDEA编译乱码 Build Output提示信息乱码
小小张自由—>张有博
06-20 6158
IDEA编译的时候乱码,Build Output提示信息乱码。提供的解决方案有很多,总有一个适合你。加油。
为什么会出现
择一事终一生
08-30 1155
一句话解释 gbk编码传过去,utf8的服务器不认得,给你返回了容错字符,又被gbk翻译回了汉字 实例演示 创建一个文本, 以gbk(或者相兼容的GB18030)保存一段字符 再用UTF-8编码打开这个文件,随便输入一个字符,使得编辑器以utf-8编码保存当前文件 再用gbk打开这个文件在上述过程的第一步中,我们按GBK编码保存了"汉"字,按GBK编码后十六进制为: BA BA, 对应二进制: 10111010 10111010 。在第2步中,我们用UTF-8的规则去读GBK的编码结果, 编辑器读入第一个
漫话:如何给女朋友解释什么是""?
weixin_43167418的博客
08-26 3295
周末女朋友出去逛街了,我自己一个人在家看综艺节目,突然,女朋友给我打来电话。过了一会,女朋友回来了,她拿出手机,给我看了她在超市拍的照片:要想知道什么是乱码,需要先从计...
整理:“烫烫烫”与“”的原理
一苇以航
08-05 6万+
手持两把,口中疾呼烫烫烫。脚踏千朵屯屯屯,笑看万物锘锘锘 解释一下为什么会是这两个东西不是别的= =: 乱码: 源于GBK字符集和Unicode字符集之间的转换问题。Unicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHARACTER。那么U+FFFD的...
【考据】“烫烫烫”与“”的原理
热门推荐
圣人不仁,使草胜豆苗稀。
07-07 22万+
在程序员网站上经常看到一个段子(满满的都是泪啊) 手持两把,口中疾呼烫烫烫。 解释一下为什么会是这两个东西不是别的= =: 棍乱码: 源于GBK字符集和Unicode字符集之间的转换问题。Unicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHAR
位(bit)、字节(byte)、字符、编码之间的关系
prdslf001001的博客
11-27 12万+
1、位:     数据存储的最小单位。每个二进制数字0或者1就是1个位;2、字节:     8个位构成一个字节;即:1 byte (字节)= 8 bit(位);     1 KB = 1024 B(字节);     1 MB = 1024 KB;   (2^10 B)     1 GB = 1024 MB;  (2^20 B)     1 TB = 1024 GB;   (2^30 B)3、字符:...
ASCII码对照表(包括十六进制、十进制和字符)
来自江南的你的博客
12-15 17万+
ASCII码对照表
常见乱码产生原因以及的产生过程
weixin_43660088的博客
06-15 820
常见乱码产生原因以及的产生过程
深入计算机组成原理(十一)二进制编码:“手持两把,口中疾呼烫烫烫”?
小问号的博客
06-20 8489
上算法和数据结构课的时候,老师们都会和你说,程序=算法+数据结构。如果对应到组成原理或者说硬件层面,算法就是我们前面讲的各种计算机指令,数据结构就对应我们接下来要讲的二进制数据。 众所周知,现代计算机都是用0和1组成的二进制,来表示所有的信息。前面几讲的程序指令用到的机器码,也是使用二进制表示的;我们存储在内存里面的字符串、整数、浮点数也都是用二进制表示的。万事万物在计算机里都是0和1,所以呢,搞...
Android 第三方SDK整理
gu305524073的博客
10-20 3117
Android 第三方SDK整理 此文章为转载,仅用于学习使用,具体内容访问此链接 import java.util.HashMap; public class Sdk { /*** by:默小坑 2020.07.07 数据收集于互联网公开资料与各大平台开发文档 还有大部分查不到资料但是有多家不同apk使用,所以直接用包名当做特征....... **/ public static void main(String[] args) { test(); } publ
ASCII码字符对照表
weixin_34051201的博客
02-27 4556
ASCII码字符对照表 ASCII码字符对照表 ASCII码大致由三部分组成:1、ASCII 打印字符:数字 32–126 分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现。注:十进制32代表空格 ,十进制数字 127 代表 DELETE 命令。下面是ASCII码和相应数字的对照表 ASCII 码 字符 ...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:猿与汪的秘密 设计师:我叫白小胖 返回首页

热门文章

  • 新浪微博PC端模拟登陆 265358
  • Python读写Excel表格,就是这么简单粗暴又好用 239738
  • 同宿舍的程序员毕业五年的现状:有人年薪百万,有人月薪一万 142693
  • 新手到黑客的最全入门路径图(附全部学习资料下载)! 113200
  • 在Navicat中如何新建数据库和表并做查询 96464

分类专栏

  • 程序人生 177篇
  • 资讯 202篇
  • Java 1篇
  • 薪资 7篇
  • 物联网 6篇
  • “社区之星”成长故事征集 7篇
  • 笔记 2篇
  • 腾讯全球数字生态大会 19篇
  • AR 1篇
  • 智能全感知系统
  • 后疫情时代
  • 企业数字化转型 1篇

最新评论

  • 群聊太多?三步教你用 Python 自动监听转发群消息!

    aaa959: bot = Bot(cache_path=True) 扫码登录后报错 发生异常: ExpatError mismatched tag: line 64, column 4 File "F:\python\wx.py", line 7, in <module> bot = Bot(cache_path=True)

  • 马斯克新要求+1:写周报,具体到代码行数的那种……

    三国第一谋士 张飞: 太牛了。让资本主义接受社会主义熏陶。

  • 极限整活!耗时三年半,程序员将两台 40 年前的电脑改造成了手风琴?

    只恨春风不解意: 灌水的giegie

  • 极限整活!耗时三年半,程序员将两台 40 年前的电脑改造成了手风琴?

    只恨春风不解意: 好家伙,灌水

  • 马斯克新要求+1:写周报,具体到代码行数的那种……

    神梦八荒: 社会主义资本家

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 马斯克新要求+1:写周报,具体到代码行数的那种……
  • 极限整活!耗时三年半,程序员将两台 40 年前的电脑改造成了手风琴?
  • 马斯克“灭霸式”裁员,多个部门遭“团灭”!结果火速打脸,开始“跪求”被裁工程师复职?
2022
11月 6篇
10月 15篇
09月 20篇
08月 21篇
07月 22篇
06月 24篇
05月 18篇
04月 16篇
03月 52篇
02月 36篇
2021年710篇
2020年1484篇
2019年1661篇
2018年721篇
2017年204篇

目录

目录

评论 4
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值

零柒月福州公司排名保定市盘古建站培训网页有哪些长江雨课堂网页版登录网址南师大排名网页怎么保存到电脑桌面广州汽车网站建设2022河北单招公办学校排名遵义县枫香镇app建站购买国内男明星排行榜100名海口建站价格网站主页一般命名为电视剧旗袍旗袍熄屏国徽太原网站建设巢湖网站建设四川大学 专业排名浏览器怎么设置自动跳转新网页莫桑比克人口有多少一建报名是哪个网站加油站改善经营管理建议魔兽世界24个英雄排名高智商电影排名前十全国电线电缆厂家排名厦门网站seo优化排名外贸怎么建独立站世界十大名牌手表排名榜扬州高中排名一览表联合早报网首页南略中文网多地新政:核酸筛查不必全员参与阳性妈妈照顾抑郁症儿子居家获批坚持第九版 落实二十条吃橘子会变阳性?记者亲测喀麦隆首发门将临赛前“跑”了专家称现在的年轻人不容易妥协北京新增本土957+3429 社会面490例比利时国家队内讧上海迪士尼乐园暂时关闭房地产股掀涨停潮广州警方通报男孩地铁里被硫酸灼伤上财校长称博士生像乞丐一样在研究巴德年院士:我与巴颖没有任何关系卡塔尔游客多到骆驼加班胡锡进建议:各地别大规模建方舱了C罗发文庆祝晋级16强多人讲述感染新冠后的故事摄像师身体不适坐地休息3次被辞B费2球2助!葡萄牙真正大腿出炉卫健局回应核子基因核检业务违规C罗上帝之发专家谈核子华曦为何没被公诉河北出现零下30℃极端低温张核子和他的“核酸版图”极寒天气致新疆阿勒泰7名工人遇难俄罗斯杯爆发大规模冲突 6人染红男子介绍未成年有偿陪侍获刑证监会:恢复上市房企再融资女子怀孕近7个月被丈夫施暴兰州气象局回应网友拍到不明发光体

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