因为手持两把锟斤拷,口中疾呼烫烫烫。
锟斤拷,是一串经常在搜索引擎页面和其他网站上看到的乱码字符。乱码源于GBK字符集和Unicode字符集之间的转换问题。
Unicode是一直在更新的,在这个过程中,肯定有一些比较新的字符他是无法表示的。或者即使Unicode发布了新版纳入了某个文字,但是很多软件系统并未升级也会有这样的问题。
就像生活中一些手机厂商新出的那些emoji表情,在自己的手机上可以正常显示,发到其他品牌的手机上可能就无法显示。这其实也是字符集不支持导致的。
发生以上情况时,无法显示的时候也需要有一个字符来表示的,在Unicode中,这个字符就是 ,他也是Unicode中定义的一个特殊字符。也就是"0xFFFD REPLACEMENT CHARACTER",所有无法表示的字符都会通过这个字符来表示。
我们上网的时候不用去关心网站采用了什么编码格式,但是页面中不时出现的乱码还是会让我们头疼。
在这点上,Firefox的用户更是深有体会,用Firefox浏览网页看到乱码的机会要比Internet Explorer多得多。 乱码主要与字符编码系统有关。例如一个网页中常出现的乱码“锟斤拷”,它就是新老编码系统转换中出现的。
在Visual Studio中的Debug模式下,如果声明一个变量,但是没有初始化,微软会给未初始化的内存复制为0xCC。给为初始化的内存赋0xCC是有原因的,0xCC其实是INT3中断指令,所以如果在Debug模式下试图去执行这块未初始化的内存的话就会中断程序。
但VS中调试器默认的字符集是MBCS,而在MBCS中0xCCCC正好就是中文中的“烫”,所以显示出来就都是烫。
如果是用分配堆的内存,会初始化成0xCD,0xCDCD在MBCS字符集中就是屯。
锟斤拷则涉及unicode的字符集转换问题,Unicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表示的。
Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHARACTER。U+FFFD的UTF-8编码是0xEFBFBD,如果重复多次形成:EFBFBDEFBFBDEFBFBD 。
在GBK/CP936/GB2312/GB18030的环境中显示的话,一个汉字2个字节,最终的结果就是:锟斤拷——锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。
著名乱码。可以用来瞬间证明自己是程序员的三个字。源于一些编译器会把C语言中未初始化的栈内存自动赋值为0xcc,以字符串输出后,便会显示成烫烫烫,类似的还有屯屯屯,锟斤拷,锘锘锘。乱码处理:
1、保存HTML文件时,文件的编码方式一定要和HTML页面标签中的编码方式一致,否则将会出现乱码。
2、当页面发生乱码时,可以先查看页面中是否有写编码方式的语句,如,然后使用记事本打开乱码该文件,单击“另存为”按钮,在d出的“另存为”对话框中修改编码方式,如下图所示,使其与页面中的编码方式一致。【点击测试我适不适合学设计】
学设计我推荐千锋教育。您有意向学习前端的话,千锋教育是一个不错的选择。千锋的教育培训业务致力于培养高质量数字化技术技能人才,主要提供大学生技能培训、职后技能培训等,课程涵盖前端、Java、Python、大数据、软件测试、物联网、云计算、网络安全、Unity、区块链、UI/UE设计、影视剪辑包装、商业插画、游戏原画、全媒体运营、产品经理等;此外还推出了软考、Adobe认证、PMP认证、华为认证、红帽RHCE认证、工信部认证等职业能力认证课程;同期成立的千锋教研院,凭借有教无类的职业教育理念,不断提升千锋职业教育培训的质量和效率。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)