encode了解一下(五)

背景

聊了许多关于编码相关的基本知识。那么其实在我们开发过程中通常会碰到哪些问题呢???

先看一首七言绝句

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

乱码

锟斤拷

主要是因为在unicode编码转成GBK是出错的,因为并不是所有的字都能够用unicode表示,因此就会导致一些unicode无法比较的字默认填充一些字符,而unicode一般填充的是 \xef\xbf\xbd(UTF-8),而反复填充这些字符,就类似于这种形式:

\xef\xbf\xbd\xef\xbf\xbd,而当使用GBK进行解析的时候,按照汉字占两个字节的规则,0xEFBF就对应“锟”, 0xBDEF对应“斤”,0xBFBD对应“拷”,所以就出现了这乱码了

烫烫烫

屯屯屯

烫烫烫和屯屯屯产生自VC,这是debug模式下VC对内存的初始化操作。VC会把栈中新分配的内存初始化为0xcc,而把堆中新分配的内存初始化为0xcd。(0xcc恰好是终端指令int 3,算是保护吗?)把0xcc和0xcd按照字符打印出来,就是烫和屯了。

锘锘锘

php 返回的 UTF-8 数据 开头自动加了 标志,是对于 UTF-8的标识。对于 javascript 来说,不会在意这个标识,依然当作数据来读,所以就会出现 这个经典的 “锘”乱码。

猜你喜欢

转载自my.oschina.net/qixiaobo025/blog/1816330
今日推荐