
再说锟斤拷与锘之前,还是先回顾那首打油诗
手持两把锟斤拷,
口中疾呼烫烫烫。
脚踏千朵屯屯屯,
笑看万物锘锘锘。
Unicode是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求,是一种字符编码。
假如有一个字符,Unicode解析不了,Unicode官方用了一个占位符来表示这个字符,这就是:U+FFFD REPLACEMENT CHARACTER。即用"\uFFFD"代表这个字符,而"\uFFFD"的utf-8的编码是“'\xef\xbb\xbf”。
如下图所示,以不同编码方式对"\uFFFD编码的结果,例如以utf-8编码的结果就是0xEFBFBD。

我们在Python中写两行代码测试一下
str = u"\uFFFD"
print(str.encode('utf-8'))

如果有两个未识别的字符那就是0xEFBFBDEFBFBD,在以GBK的环境显示,按照一个中文汉字占两个字节,最终就是:锟斤拷---锟(0xEFBF),斤(0xBDEF),拷(0xBFBD),这就是锟斤拷的由来。
接下来在说“锘”,其实这个也是编码的问题。
当我新建一个文本文档的时,内容为空,选择另存时有很多编码格式可选,如图,假如我选择了带有BOM的utf-8格式存储。


最后在总结一下,“烫烫烫”是由于栈未初始化引起的,“屯屯屯”是由于堆未初始化引起的,“锟斤拷”是由于Unicode未能识别字符而引起的,“锘”是由于文件类型是带有BOM的utf-8引起的。
