一句话解释

gbk 编码文件,utf8的解析器不认得,因此返回了容错字符,容错字符被gbk翻译回了汉字

实例演示

  1. 创建一个文本, 以gbk(或者相兼容的GB18030)保存一段字符
  2. 再用UTF-8编码打开这个文件,随便输入一个字符,使编辑器以 utf-8 编码保存当前文件
  3. 再用 gbk 打开这个文件

    在上述过程的第一步中,我们按GBK编码保存了"汉"字,按GBK编码后十六进制为: BA BA, 对应二进制: 10111010 10111010 。在第2步中,我们用UTF-8的规则去读GBK的编码结果, 编辑器读入第一个字节 10111010, 按UTF-8的规则,这个值没有对应的映射,因此会显示为"�",表明这是一个无效码值.接下来,我们又用UTF-8的规则去保存之前GBK编码,但由于存在无效的UTF-8码值, 编辑器将这些无效码值转为:EF BF BD (这个值被UTF-8用于表示无效码值).于是 BA BA 就被转为了 EF BF BD EF BF BD UTF-8是变长编码,如果高位是0开头则表明是一个 7-bit单字节字符; 而对于多字节字符,用第一个byte中高位1的数量来记录一个字符占有字节的数量,比如 1110 0000,有3个1表明是一个3字节字符, 后面还会跟着两个字节,它们是一个整体,合起来用于表示一个3字节字符. 当前例子中的 10111010 , 前面一个1,排除是多字节的可能; 视为单字节的话,这个值处于80~FF这个区间,不在UTF-8的编码范围内,所以只好显示为"�" 在第3步我们用GBK去读取 EF BF BD EF BF BD ,而在GBK的编码表里,它们对应的字符为: “锟斤拷”.

链接:https://www.zhihu.com/question/23024782/answer/1690048685
扩展:国外程序员也烫屯锟斤拷吗?

为什么会出现锟斤拷?相关推荐

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

    作者 | 石头哥 来源 | 程序猿石头(ID:tangleithu) 以一首五言绝句作为开篇,你知道背后说的是什么吗? 手持两把锟斤拷 口中疾呼烫烫烫 脚踏千朵屯屯屯 笑看万物锘锘锘 � 为何物? 在 ...

  2. 看程序员如何给女朋友解释什么是锟斤拷?

    周末女朋友出去逛街了,我自己一个人在家看综艺节目,突然,女朋友给我打来电话. 过了一会,女朋友回来了,她拿出手机,给我看了她在超市拍的照片:  要想知道什么是乱码,需要先从计算机编码说起. 字符编码 ...

  3. 漫画:如何给女朋友解释什么是“锟斤拷”?

    作者 | 漫话编程 本文经授权转载自漫话编程(ID:mhcoding) 周末女朋友出去逛街了,我自己一个人在家看综艺节目,突然,女朋友给我打来电话. 过了一会,女朋友回来了,她拿出手机,给我看了她在超 ...

  4. 11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?

    11 | 二进制编码:"手持两把锟斤拷,口中疾呼烫烫烫"? 上算法和数据结构课的时候,老师们都会和你说,程序 = 算法 + 数据结构.如果对应到组成原理或者说硬件层面,算法就是我们 ...

  5. Python模拟锟斤拷等各类乱码

    锟拷码和口字码 说到乱码问题就不得不提到锟斤拷,这算是非常常见的一种乱码形式,那么它到底是经过何种错误操作产生的呢?下面我们一步步探究. 看一个基本示例: "��".encode( ...

  6. java锟斤拷锟斤拷锟_锟斤拷?UTF-8与GBK互转乱码问题

    作为一名程序员,肯定有被乱码困扰的时候,真到了百思不得其解的时候,就会觉得:英文程序员真幸福. 但其实只要明白编码之间的转换规律,其实乱码so easy~ 我们知道,计算机存储数据都是2进制,就是0和 ...

  7. java 锟斤 解决乱码_java eclipse 开发中文乱码锟斤拷小锟斤拷锟

    最近在做项目的时候发现有些员工提交的代码到SVN上之后乱码了,eclipse没有乱码,乱码字样为"锟斤拷小锟斤拷锟斤拷植锟斤拷锟斤拷3146锟斤拷锟斤拷锟斤拷锟绞撅拷锟绞硷拷锟揭筹拷锟?&q ...

  8. “锟斤拷“的前世今生

    不管是在工作中还是生活中,相信很多同学都被"锟斤拷"深深的毒害过,比如这样, 这样, 还有这样, 那么究竟是为什么会出现这些奇怪的字符?接下来我们一探究竟! ASCII编码 在计算 ...

  9. java打印出 锟斤拷_一段java代码带你认识锟斤拷

    @Test public void testKunJinKao(){ String str="我不是锟斤拷"; try { byte[] buff=null; //让我们先看看几种 ...

  10. python3 中文乱码 锟斤_乱码问题解决之“锟斤拷”

    原标题:乱码问题解决之"锟斤拷" 本文作者:张语盈 本文编辑:李朋冲 技术总编:薛 原 乱码是我们在用stata读入文件时经常会出现并且令人头疼的问题,当我们错误定义了读入文件的编 ...

最新文章

  1. java cxf服务端代码_【JAVA】 cxf 生成 webservice 服务端代码
  2. 剑指offer(Java实现) 求1+2+3+…+n
  3. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to
  4. linux打包运行python文件_Linux下安装pyinstaller用于将py文件打包生成一个可执行文件...
  5. Android中使用Notification在通知栏中显示通知
  6. 开发物体识别桌、_想用人工智能实现安全风险管控?快来试试EasyMonitor一站式视频监控开发平台...
  7. ubuntu14.04安装linux公社,Ubuntu 14.04下安装IT++
  8. Unity之读取配置表去加载物体
  9. Python 了解 bytes 与 str 的区别
  10. 从数据库导出数为生成excel表
  11. 全面使用禅道做敏捷开发的规范化管理分享
  12. Python项目打包成exe文件
  13. 被吐槽得最惨的10大专业,计算机专业亮了
  14. MATLAB 标定工具箱使用教程
  15. python识别车辆图片_opencv+python车辆识别
  16. ora11g 安装报错ins_emagent.mk
  17. cat 常用的日志分析架构方案_深度剖析|数据库生产常用架构方案
  18. 【转】推荐系统入门实践:世纪佳缘会员推荐(完整版)
  19. LTE-5G学习笔记8---PRACH参数规划
  20. 基于java springboot医院挂号微信小程序源码(毕设)

热门文章

  1. mongoose用模型更新不了,因为模型对象中默认带有_id会提示errmsg: “Performing an update on the path ‘_id‘ would modify the i
  2. java实现rabbitmq_RabbitMQ搭建(2)-Java简单实现
  3. element tabs 的基础类型下划线不显示
  4. python通过cookie跳过登录
  5. 图表示学习之时序的事件和节点动态
  6. 压缩包文件解压找回密码
  7. XYplorer v17.60.01
  8. Java学习lesson 10
  9. 最牛茅台投资人的一席真言
  10. 执念斩长河22年寒假出发录