在程序员网站上经常看到一个段子(满满的都是泪啊)
手持两把锟斤拷,口中疾呼烫烫烫。
解释一下为什么会是这两个东西不是别的= =:
棍斤拷乱码:
源于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
本文解析了程序员社区中常见的两个乱码现象:锟斤拷和烫烫烫。锟斤拷源自于GBK与Unicode编码转换过程中的占位符问题,而烫烫烫则是在Windows平台下,Visual Studio编译器Debug模式中未初始化栈内存的表现。了解这些乱码背后的技术原因,有助于程序员在遇到类似问题时进行排查。
3852

被折叠的 条评论
为什么被折叠?



