锟斤拷

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)[1]  。

http://baike.baidu.com/link?url=GCoDM7HBIV_JcJfXzIU9p1Rx7r8Ns2w6jVoZwnhn9ZizxhNG7egrUWojSETDzxb74uZFeVGIBK_qZYgNTo7So_

锘锘锘原理

BOM 是 Byte Order Mark 的缩写。是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8就成了EF BB BF。这个标记是可选的,因为UTF8字节没有顺序,所以它可以被用来检测一个字节流是否是UTF-8编码的。

  • 锘EFBB
  • 匡BFEF
  • 豢BBBF

出现这个问题肯定是你写网页的时候用了记事本 ,记事本在保存文件的时候把原本文件的编码改了记事本会默认保存为UTF-8的编码,而如果你原本网页是GBK编码的,就会出现乱码~BOM就是把一个Unicode保留字符U+FEFF,按照文件存储者的编码方式编码后,塞到文件内容的最前边。这样用不同的Unicode编码去解析文件头,就可以得知文件的编码方式和大小端顺序。结果就是文件头部多出来了两三个字节。

有了BOM所有的程序都必须为BOM作出修改,这无疑是一个“大折腾”的行为。所以一般不认为BOM是个好主意。BOM引发的问题,我能想起来两个:

PHP无法指定header(因为有BOM相当于开启输出)
UNIX可执行脚本的Shabang标记(#!)不能识读

任何时候都采用无BOM的UTF-8编码的Unicode,绝对是一个引发麻烦最少的最实用策略。UTF-8是Unicode的最佳实践,没有之一。
必须指出的是,何弃疗的微软经常做出非要DOM不可的行为,最典型的例子就是那个记事本(存盘就加DOM)。所以任何时候,都千万别偷懒用记事本编辑PHP。华语骄傲Notepad++是Windows下的不二之选。

烫烫烫屯屯屯

在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)……

手持两把锟斤拷,口中疾呼烫烫烫。脚踏千朵屯屯屯,笑看万物锘锘锘相关推荐

  1. 11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?

    11 | 二进制编码:"手持两把锟斤拷,口中疾呼烫烫烫"? 上算法和数据结构课的时候,老师们都会和你说,程序 = 算法 + 数据结构.如果对应到组成原理或者说硬件层面,算法就是我们 ...

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

    上面这种乱码的形式我特别映像深刻,刚好今天在学习的时候碰到了,便记录下来. 先理解电脑中是怎么保存数据的. 电脑中的数据 我们知道,电脑所保存的数据,都是010101 的二进制数据.常常在学数据结构的 ...

  3. 组成原理|手持两把锟斤拷,口中疾呼烫烫烫

    乱码的形成:编码<->解码 手持两把锟斤拷,口中疾呼烫烫烫 脚踏千朵屯屯屯,笑看万物锘锘锘 乱码? 乱码是怎么出现的呢?是CPU太热了?口中疾呼烫烫烫?2333 原因是:同样的文本,采用不 ...

  4. 手持两把锟斤拷,口中疾呼烫烫烫。 脚踏千朵屯屯屯,笑看万物锘锘锘。

    锟斤拷 Unicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHARACT ...

  5. 手持两把锟斤拷, 口中疾呼烫烫烫, 脚踏千朵屯屯屯, 笑看万物锘锘锘

    锟斤拷的来历 GBK与UTF-8 Unicode和老编码体系的转化进程中,一定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLAC ...

  6. 手持两把锟斤拷,口中疾呼烫烫烫。脚踏千朵屯屯屯,笑看万物锘锘锘。

    233333 TA 学编程时爱看的书籍封面是? 各种各样的动物 21 天精通 XXX 現役女子大生(秘)リアルセックス 03 转载于:https://www.cnblogs.com/guangshan ...

  7. 1 分钟带你认识从 � 到 锟斤拷

    作者 | 石头哥 来源 | 程序猿石头(ID:tangleithu) 以一首五言绝句作为开篇,你知道背后说的是什么吗? 手持两把锟斤拷 口中疾呼烫烫烫 脚踏千朵屯屯屯 笑看万物锘锘锘 � 为何物? 在 ...

  8. 烫烫烫、屯屯屯、锟斤拷、诺诺诺的简单示例代码

    手持两把锟斤拷, 口中疾呼烫烫烫. 脚踏千朵屯屯屯, 笑看万物锘锘锘. 烫烫烫 简单点说,最常见的就是 数组没初始化 并且按照%s 输出了. #include<stdio.h> int m ...

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

    在程序员网站上经常看到一个段子(满满的都是泪啊) 手持两把锟斤拷,口中疾呼烫烫烫. 解释一下为什么会是这两个东西不是别的= =: 棍斤拷乱码: 源于GBK字符集和Unicode字符集之间的转换问题.U ...

最新文章

  1. 记一次网站部署遇到的问题
  2. redis系列:通过文章点赞排名案例学习sortedset命令
  3. .Net Core Configuration源码探究
  4. mysql递归层次查询
  5. c语言define定义全局变量,webpack中使用DefinePlugin定义全局变量
  6. 快速排序QuickSort
  7. js判断传入时间和当前时间大小
  8. NFine.Framework框架去除cookie后门
  9. Docker 基本操作 镜像操作 -- docker镜像命令
  10. 华为路由与交换 eSight基本概述学习笔记
  11. logo设计灵感的创意网站
  12. ROS学习记录(二)阿克曼转向车运动学模型及在gazebo中搭建仿真环境
  13. python绘制横向柱状图 妈妈再也不用担心我不会画图了
  14. UVA12563: Jin Ge Jin Qu hao(类01背包)
  15. 爱奇艺要怎么样才能更换视频解码设置
  16. 使用ros将点云投影到图像平面实时显示,激光雷达和相机融合处理
  17. 数字电路使用555定时器,74163,74194设计跑马灯电路
  18. 睡眠质量如何提高?试试这几种方法
  19. 神通数据库 mysql_sqlserver、mysql、oracle、神通数据库(oscar)、达梦(dm)各自的默认端口号...
  20. Allegro如何快速改变整板线宽操作指导

热门文章

  1. FPGrowth 关联规则
  2. 大尺度分布式水文模型VIC模型原理与应用
  3. 程序员的 MySQL 面试金典
  4. 58同城私有化:错过移动红利,吃流量老本,如何挽回崩塌的形象?
  5. 基于阿里云服务器的Qt SDK配置
  6. IPMI之ipmitool工具命令详解
  7. 使用深度学习OpenCV python进行字符识别
  8. SpringCloud - Spring Cloud Netflix 之 Zuul网关;路由(十一)
  9. 【VS2019编辑器第一行默认添加:#define _CRT_SECURE_NO_WARNINGS 1\使用scanf函数报错 解决方案\创建源文件第一行不出现#define _CRT_SECURE】
  10. 2021年西交大计基题目解析(第12周)