锟斤拷

乱码字符
收藏
0有用+1
0
锟斤拷,是一串经常在搜索引擎页面和其他网站上看到的乱码字符。乱码源于GBK字符集Unicode字符集之间的转换问题
中文名
锟斤拷
所属学科
计算机
属    性
乱码字符
原    因
字符集之间的转换错误
出现领域
互联网

原因

播报
编辑
Unicode是一直在更润钻弃新的,在这个过程中,肯定有一些比较新的字符他是无法表示的。或者即使Unicode发布了新版纳入了某个文字,但是很多软件系统并未洒墓拒升级也会有这样的问题。
就像生活中一些手机厂商新出的那些emoji表情,在自己的手机上可以正常显示,发到其他品牌的手机上可能就无法显示。这其实也是字符集不支持导致的。
发生以上情况时,无法显示的时候也需要有一个字符来表示的签乐婶,在Unicode中,这个字符就是 ,他也是Unicode中定义的一个特殊字符。也就是"0xFFFD REPLACEMENT CHARACTER",所有无法表示的字符都会通过这个字符来表示。 [1]
我们上网的时候不用去关心网站采用了什么编码格式,但是页面中不时出现的乱码还是会让我们头疼。在这点上,Firefox的用户更是深有体会,用Firefox浏览网页看到乱码的机会要比Internet Explorer多得多。 乱码主要与字设促符编码系统有关。例如一个网页中常出现的乱码“锟斤拷”,它就是新老编码系统转换中出现的。 [2]
Visual Studio中的Debug模式下,如果声明一个变量,但是没有初始化,微软会给未初始化的内存赋值为0xCC。给未初始化的内存赋0xCC是有原因的,0xCC其实是INT3中断指令,所以如果在Debug模式下试图去执行这块未初始化的内存的话就会中断程序。
但VS中调试器默认的字符集是MBCS,而在MBCS中0xCCCC正好就是中文中的“烫”,所以显示出来就都是烫。
欢拜旬如果是用分配堆的内存,会初始化成0xCD,0xCDCD在MBCS字符集中就是屯。
锟斤拷 [2]
锟斤拷则涉及unicode的字符集转换问题,U几乐nicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHARACTER。U+FFFD的UTF-8编码是0xEFBFBD,如果重复多次形成:EFBFBDEFBFBDEFBFBD 。
GBK/CP936/GB2312/GB18030的环境中显示的话,一个汉字2个字节,最终的结果就是:锟斤拷——锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。 [3]
Python3代兰辨再请码厦试:
print((u'\uFFFD'.encode('utf-8')*2).decode('gbk'))
输出结果:“锟斤拷”。

示例

播报
编辑
“锟届瀿锟斤拷雮傡锟斤拷直锟斤拷锟”、“锟斤拷锟斤拷之锟斤拷锟窖э拷锟 ”……
上面这些字句是毫无实际意义的,但它们却形象地表达出了一些莫名其妙的问题。这是一个很经典的乱码,最容易出现的地方就是搜索引擎。
例如这个招聘就非常经典: [2]
所属行业:线缆
单位规模:100 - 499人
注册资金:1299万
联系人:锟斤拷锟斤拷
联系人职位:锟斤拷锟斤拷
传真:xxx-xxxxxxxx
电子信箱:xxxx_xxx@xxxxxx.xxx
通信地址:
邮编:
单位网址:
单位介绍:台锟斤拷锟斤拷业锟斤拷台锟斤拷锟斤拷锟侥碉拷f锟斤拷锟斤拷锟斤拷锟?锟斤拷锟斤拷/锟斤拷锟斤拷
招聘职位:锟斤拷锟斤拷
人数:20人
发布日期:2007-07-17
联系人:锟斤拷锟斤拷

其他经典乱码

播报
编辑
除了锟斤拷以外,还有两组比较经典的乱码,分别是"烫烫烫"和"屯屯屯",这两个乱码产生自VC,这是debug模式下VC对内存的初始化操作。VC会把栈中新分配的内存初始化为0xcc,而把堆中新分配的内存初始化为0xcd。把0xcc和0xcd按照字符打印出来,就是烫和屯了。 [1]