Python模拟锟斤拷等各类乱码
锟拷码和口字码
说到乱码问题就不得不提到锟斤拷,这算是非常常见的一种乱码形式,那么它到底是经过何种错误操作产生的呢?下面我们一步步探究。
看一个基本示例:
"��".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模拟锟斤拷等各类乱码相关推荐
- java锟斤拷锟斤拷锟_锟斤拷?UTF-8与GBK互转乱码问题
作为一名程序员,肯定有被乱码困扰的时候,真到了百思不得其解的时候,就会觉得:英文程序员真幸福. 但其实只要明白编码之间的转换规律,其实乱码so easy~ 我们知道,计算机存储数据都是2进制,就是0和 ...
- java 锟斤 解决乱码_java eclipse 开发中文乱码锟斤拷小锟斤拷锟
最近在做项目的时候发现有些员工提交的代码到SVN上之后乱码了,eclipse没有乱码,乱码字样为"锟斤拷小锟斤拷锟斤拷植锟斤拷锟斤拷3146锟斤拷锟斤拷锟斤拷锟绞撅拷锟绞硷拷锟揭筹拷锟?&q ...
- python3 中文乱码 锟斤_乱码问题解决之“锟斤拷”
原标题:乱码问题解决之"锟斤拷" 本文作者:张语盈 本文编辑:李朋冲 技术总编:薛 原 乱码是我们在用stata读入文件时经常会出现并且令人头疼的问题,当我们错误定义了读入文件的编 ...
- vue导出excel乱码(锟斤拷唷?锟?;锟斤拷)
我这个是 post请求乱码了 ,如果是get,就直接window.open(url,'_blank')就可以了 1. "锟斤拷唷?锟?;锟斤拷"这种乱码信息导致的原因是:整个数据流 ...
- 常见乱码产生原因以及锟斤拷的产生过程
文章目录 常见乱码产生原因 方块码的产生原因 代码测试 控制台打印以下信息 编码原理 锟拷码的产生原因 代码测试 控制台打印以下信息 编码原理 常见乱码产生原因 名称 示例 特点 原因 古文码 浜屽紶 ...
- 漫画:如何给女朋友解释什么是“锟斤拷”?
作者 | 漫话编程 本文经授权转载自漫话编程(ID:mhcoding) 周末女朋友出去逛街了,我自己一个人在家看综艺节目,突然,女朋友给我打来电话. 过了一会,女朋友回来了,她拿出手机,给我看了她在超 ...
- 看程序员如何给女朋友解释什么是锟斤拷?
周末女朋友出去逛街了,我自己一个人在家看综艺节目,突然,女朋友给我打来电话. 过了一会,女朋友回来了,她拿出手机,给我看了她在超市拍的照片:  要想知道什么是乱码,需要先从计算机编码说起. 字符编码 ...
- 11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
11 | 二进制编码:"手持两把锟斤拷,口中疾呼烫烫烫"? 上算法和数据结构课的时候,老师们都会和你说,程序 = 算法 + 数据结构.如果对应到组成原理或者说硬件层面,算法就是我们 ...
- “锟斤拷“的前世今生
不管是在工作中还是生活中,相信很多同学都被"锟斤拷"深深的毒害过,比如这样, 这样, 还有这样, 那么究竟是为什么会出现这些奇怪的字符?接下来我们一探究竟! ASCII编码 在计算 ...
最新文章
- GEO数据挖掘(2)-GEO数据库
- 小程序的前端坑(持续更新)
- 集群、负载均衡、分布式
- 单一职责原则--设计模式系列
- ruby hash方法_Ruby中带有示例的Hash.flatten方法
- ubuntu 查找qt是否安装_Ubuntu Qt 安装教程--快速下载连接(网盘)
- MATLAB用递归法求解集合子集,用递归法求一个集合的子集c语言,急!!!
- java sbyte_Java Byte parseByte()方法
- Kotlin 接口(三)
- SAP系统管理员的工作
- C++ 名字空间详解
- 配置 Logback 异步 Appender 时注意顺序
- 计算机无法接入工作网络,局域网中电脑无法连接网络怎么处理
- 论文阅读:Securely Outsourcing Neural Network Inferenceto the Cloud with Lightweight Techniques
- Ext2.2 combo 多选效果
- 未来计算机取代教师,三、综合运用阅读下面材料,完成下列小题未来是“人机共教”的时代。教师作为一种职业不会被取代,并不意味着所有教师都不会被淘汰重复性、机械性工作都可以交给人工智能,-组卷网...
- 辽宁省省直个人住房公积金贷款指南
- 《数字逻辑与计算机设计基础》
- python前端——HTML超文本标记语言、CSS层叠样式表
- 心理学家:人生最可怕的不是失去爱,而是失去这种能力
热门文章