【考据】“烫烫烫”与“锟斤拷”的原理

本文解析了程序员社区中常见的两个乱码现象:锟斤拷和烫烫烫。锟斤拷源自于GBK与Unicode编码转换过程中的占位符问题,而烫烫烫则是在Windows平台下,Visual Studio编译器Debug模式中未初始化栈内存的表现。了解这些乱码背后的技术原因,有助于程序员在遇到类似问题时进行排查。

在程序员网站上经常看到一个段子(满满的都是泪啊)

手持两把锟斤拷,口中疾呼烫烫烫。

解释一下为什么会是这两个东西不是别的= =:

棍斤拷乱码:

源于GBK字符集和Unicode字符集之间的转换问题。Unicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHARACTER。那么U+FFFD的UTF-8编码出来,恰好是 ‘\xef\xbf\xbd’。如果这个’\xef\xbf\xbd’,重复多次,例如 ‘\xef\xbf\xbd\xef\xbf\xbd’,然后放到GBK/CP936/GB2312/GB18030的环境中显示的话,一个汉字2个字节,最终的结果就是:锟斤拷——锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。

烫烫烫乱码:

在windows平台下,ms的编译器(也就是vc带的那个)在 Debug 模式下,会把未初始化的栈内存全部填成 0xcc,用字符串来看就是"烫烫烫烫烫烫烫",未初始化的堆内存全部填成0xcd,字符串看就是“屯屯屯屯屯屯屯屯”。也就是说出现了烫烫烫,赶紧检查初始化吧。。。
————————————————
版权声明:本文为优快云博主「mig_davidli」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/mig_davidli/article/details/37507731

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值