锟拷码和口字码

说到乱码问题就不得不提到锟斤拷,这算是非常常见的一种乱码形式,那么它到底是经过何种错误操作产生的呢?下面我们一步步探究。

看一个基本示例:

"��".encode("u8").decode("gbk")
'锟斤拷'

我们将�字符以UTF-8编码后,以GBK编码解码就可以得到 锟斤拷 的乱码。

那么为什么 锟斤拷 为什么如此常见呢?这是因为大部分编程语言在使用UNICODE系列的编码去解码时,会将不识别的字节编码为0xFFFD(65533)即�字符表示未知字符进行占位:

"\uFFFD"
'�'

注意:UNICODE系列包括UTF-8、UTF-16、UTF-32编码,一般UNICODE编码指UTF-16编码。在python中unicode_escape编码表示UNICODE编码的的转义形式:

"\uFFFD".encode("unicode_escape").decode()
'\\ufffd'

对于Python,默认情况下解码碰到未知字符时会直接抛出异常,但是如果设置errors参数为replace时,则会将未知字符解码为�占位。

将汉字用GBK编码:

"小小明".encode("gbk")
b'\xd0\xa1\xd0\xa1\xc3\xf7'

将上述编码结果用UTF-8编码解码,并设置为替换模式:

"小小明".encode("gbk").decode("u8", "replace")
'СС��'

0xd0a1被解码成С,但是0xc3和0xf7无法被UTF-8编码识别,只能用占位符�替换,于是就得到了上面的结果。

此时我们再编码并解码:

"小小明".encode("gbk").decode("u8", "replace") \.encode("u8").decode("gbk", "replace")
'小小锟斤拷'

这是因为�被编码成了0xEFBFBD

"��".encode("u8")
b'\xef\xbf\xbd\xef\xbf\xbd'

而0xEFBFBDEFBFBD被GBK解码时,正好就是锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。

上述以�为主的乱码字符就是口字码,原因是以UTF-8编码读取了GBK编码的中文。

而锟拷体则是大部分都是锟斤拷的全中文字符,原因是用GBK编码读取了UTF-8编码的口字码中文。

古文码与问句码

问句码产生的核心原因在于GBK对于无法编码的字符会使用?填充:

"�												

Python模拟锟斤拷等各类乱码相关推荐

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

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

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

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

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

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

  4. vue导出excel乱码(锟斤拷唷?锟?;锟斤拷)

    我这个是 post请求乱码了 ,如果是get,就直接window.open(url,'_blank')就可以了 1. "锟斤拷唷?锟?;锟斤拷"这种乱码信息导致的原因是:整个数据流 ...

  5. 常见乱码产生原因以及锟斤拷的产生过程

    文章目录 常见乱码产生原因 方块码的产生原因 代码测试 控制台打印以下信息 编码原理 锟拷码的产生原因 代码测试 控制台打印以下信息 编码原理 常见乱码产生原因 名称 示例 特点 原因 古文码 浜屽紶 ...

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

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

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

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

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

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

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

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

最新文章

  1. GEO数据挖掘(2)-GEO数据库
  2. 小程序的前端坑(持续更新)
  3. 集群、负载均衡、分布式
  4. 单一职责原则--设计模式系列
  5. ruby hash方法_Ruby中带有示例的Hash.flatten方法
  6. ubuntu 查找qt是否安装_Ubuntu Qt 安装教程--快速下载连接(网盘)
  7. MATLAB用递归法求解集合子集,用递归法求一个集合的子集c语言,急!!!
  8. java sbyte_Java Byte parseByte()方法
  9. Kotlin 接口(三)
  10. SAP系统管理员的工作
  11. C++ 名字空间详解
  12. 配置 Logback 异步 Appender 时注意顺序
  13. 计算机无法接入工作网络,局域网中电脑无法连接网络怎么处理
  14. 论文阅读:Securely Outsourcing Neural Network Inferenceto the Cloud with Lightweight Techniques
  15. Ext2.2 combo 多选效果
  16. 未来计算机取代教师,三、综合运用阅读下面材料,完成下列小题未来是“人机共教”的时代。教师作为一种职业不会被取代,并不意味着所有教师都不会被淘汰重复性、机械性工作都可以交给人工智能,-组卷网...
  17. 辽宁省省直个人住房公积金贷款指南
  18. 《数字逻辑与计算机设计基础》
  19. python前端——HTML超文本标记语言、CSS层叠样式表
  20. 心理学家:人生最可怕的不是失去爱,而是失去这种能力

热门文章

  1. python:使用机器学习算法对卫星遥感影像进行分类
  2. 使用腾讯云服务器搭建个人网盘
  3. linux用户motd,linux – 每个用户的SSH MOTD
  4. Win10 Ubuntu16.04 时间同步问题
  5. godaddy 服务器位置,GoDaddy DNS服务器地址 | Godaddy美国主机中文指南
  6. 【物联网】思科扔下数颗物联网重磅炸弹,中国IoT圈却选择集体视而不见!
  7. 滴滴开源Android插件框架
  8. Python使用阿里API进行情感分析
  9. 【定位原理揭秘第三期】室内定位技术原理揭秘
  10. window 下蓝牙开发