网站地图制作任务出现 任务失败:invalid or incomplete multibyte or wide character
该如何解决?
解决方案:
查看网站页面编码是否为 GB2312,是就将字符编码改为 GBK 或者 GB18030
问题原因
页面中出现了当前编码不包含的字符,导致服务解析失败。
拓展知识
GB2312
最早一版的中文编码,每个字占据 2bytes。由于要和 ASCII 兼容,那这 2bytes 最高位不可以为 0 了(否则和 ASCII 会有冲突)。在 GB2312 中收录了 6763 个汉字以及 682 个特殊符号,已经囊括了生活中最常用的所有汉字。
GBK
由于 GB2312 只有 6763 个汉字,我汉语博大精深,只有 6763 个字怎么够?于是 GBK 中在保证不和 GB2312、ASCII 冲突(即兼容 GB2312 和 ASCII)的前提下,也用每个字占据 2bytes 的方式又编码了许多汉字。经过 GBK 编码后,可以表示的汉字达到了 20902 个,另有 984 个汉语标点符号、部首等。值得注意的是这 20902 个汉字还包含了繁体字。
GB18030
然而,GBK 的两万多字也已经无法满足我们的需求了,还有更多可能你自己从来没见过的汉字需要编码。这时候显然只用 2bytes 表示一个字已经不够用了(2bytes 最多只有 65536 种组合,然而为了和 ASCII 兼容,最高位不能为 0 就已经直接淘汰了一半的组合,只剩下 3 万多种组合无法满足全部汉字要求)。因此 GB18030 多出来的汉字使用 4bytes 编码。当然,为了兼容 GBK,这个四字节的前两位显然不能与 GBK 冲突(实操中发现后两位也并没有和 GBK 冲突)。我国在 2000 年和 2005 年分别颁布的两次 GB18030 编码,其中 2005 年的是在 2000 年基础上进一步补充。至此,GB18030 编码的中文文件已经有七万多个汉字了,甚至包含了少数民族文字。