编码与“锟斤拷”的故事
最近一段时间因为在做网站的多浏览器优化工作,所以在各大厂商浏览器之间进行测试和调试,便发现了许多有趣的事情。不知道是因为浏览器的版本原因还是我自身电脑系统的原因,每一次在“百度浏览器”右上方的搜索栏进行搜索的时候,都会出现“锟斤拷”的问题。
那什么是“锟斤拷”呢?“锟斤拷”是一串经常在搜索引擎和其他网站上看到的乱码字符,而其出现的根本原因是:由于 GBK 字符集和 Unicode 字符集间的直接转换导致的。
Unicode 对于老的编码系统 GBK 中无法表示的字符将会使用占位符 “U+FFFD” 来表示,而 U+FFFD 使用 UTF-8 编码出来的结构恰好是 “xefxbfxbd”。如果这个字符串序列重复多次,例如 “xefxbfxbdxefxbfxbd”,然后再将其放到 GBK / CP936 / GB2312/ GB18030 等固定编码的环境中进行显示的话,一个汉字占用2个字节,最终的显示结果就变成了:锟斤拷:锟(0xEFBF)、斤(0xBDEF)、拷(0xBFBD)。
而且,据悉百度搜索引擎从2011年起也多次出现了这种编码转换的问题,值得引起官方的注意。
百度搜索的“锟斤拷”问题
评论 | Comments