当前位置:网站首页>程序员常说的“左手锟斤拷,右手烫烫烫”是怎么回事?
程序员常说的“左手锟斤拷,右手烫烫烫”是怎么回事?
2022-08-02 22:49:00 【InfoQ】
实际上锟斤拷/烫烫烫/屯屯屯/锘锘锘都是字符集转换之间的问题,一些特定用途的字节在另一种字符集编码表现为这些特殊字符。
接下来,让我们一一看看它们的来历。
锟斤拷
起源于GBK字符集于Unicode字符集之间的转换。众所周知,Unicode是现在最为通用的编码方式之一,它与其它一些老编码体系进行转换时,一定存在一些Unicode无法表示的字(因为Unicode设计的时候并未完全兼容所有的编码体系,而且也没有必要),所以Unicode官方使用了一个占位符来表示这些无法表示的文字,即:U+FFFD (REPLACEMENT CHARATER),这样我们考察U+FFFD的UTF-8编码表示,是"0xef0xbf0xbd",如果重复多次,如"0xef0xbf0xbd0xef0xbf0xbd",然后在GBK/CP936/GB2312/GB18030字符集中解码的话,一个汉字两个字节,最终结果就是锟斤拷——锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。
#!/usr/bin/env python
# -*- coding=utf8 -*-
"""
# File Name : kunjinkao.py
# Author : SangYu
# Email : [email protected]
# Created Time : 2022年08月02日 星期二 21时53分16秒
# Description :
"""
if __name__ == "__main__":
for i in u'\uFFFD'.encode('utf-8'):
print("%x" % ord(i)),
print ""
print((u'\uFFFD'.encode('utf-8')*2).decode('gbk'))
for i in u'锟斤拷'.encode('gbk'):
print("%x" % ord(i)),
pass
执行结果:
烫烫烫与屯屯屯
Windows平台中,MicroSoft的VC编译器为了debug内存问题,在用户开启Debug模式时,会将未初始化的栈内存全部使用0xcc进行填充,对于未初始化的堆内存全部使用0xcd进行填充,同样的道理,我们查看这个值得GBK码表示如下:
[hex(ord(i)) for i in u'烫烫烫'.encode('gbk')]
[hex(ord(i)) for i in u'屯屯屯'.encode('gbk')]
测试结果:
锘锘锘
UTF编码方案中有标识编码的标准标记,如UTF-16中是FF FE,当我们在编写网页时使用记事本进行编辑,此时使用的是GBK编码,那么转换过来就会增加一个Unicode保留字符U+FEFF,同样地,如果这个字符头被表示为UTF-8编码后,就是"0xEF0xBB0xBF",当转换为GBK编码后,就会是如下的字符:
- 锘EFBB
- 匡BFEF
- 豢BBBF
[hex(ord(i)) for i in u'锘匡豢'.encode('gbk')]
测试结果:
边栏推荐
猜你喜欢
随机推荐
【C语言】带头双向循环链表(list)详解(定义、增、删、查、改)
Week 7 CNN Architectures - LeNet-5、AlexNet、VGGNet、GoogLeNet、ResNet
B站回应“HR 称核心用户都是 Loser”:该面试官去年底已被劝退,会吸取教训加强管理
21天学习挑战赛(1)设备树的由来
VMware workstation 程序启动慢
聚乙二醇衍生物4-Arm PEG-DSPE,四臂-聚乙二醇-磷脂
IDO预售代币合约系统开发技术说明及源码分析
科研用Cholesterol-PEG-NHS,NHS-PEG-CLS,胆固醇-聚乙二醇-活性酯
Broadcast platform, the use of the node generated captcha image, and validate
C语言函数详解(2)【函数参数——实际参数(实参)&形式参数(形参)】
MySQL 与InnoDB 下的锁做朋友 (四)行锁/记录锁
学习Autodock分子对接
严格反馈非线性系统基于事件触发的自抗扰预设有限时间跟踪控制
ROS2初级知识(9):bag记录过程数据和重放
No-code development platform form styling steps introductory course
Numpy数组中d[True]=1的含义
基于STM32的FLASH读写实验含代码(HAL库)
Kubernetes 进阶训练营 网络
Mysql查看慢查询日志
CWE4.8:2022年危害最大的25种软件安全问题