乱码的原因以及恢复
在前文 系统梳理unicode与编码方式 中简单提及了解析错误这种造成乱码的原因,下文详细说明一下几种原因。
解析错误
- 简单情况
- 使用错误的编码方式解析二进制数据
- 例:法国人用 Windows-1252 编码写文件,中国人用 GB18030 解析
- 解决方法
- 使用正确的编码方式解读
- 切换查看编码方式只改变了解析方式,不改变二进制数据本身
错误的解析和编码转换
- 复杂情况
- 在解析错误的基础上,进行了错误的编码转换
- 例:法国人用 Windows-1252 编码写文件,中国人用 GB18030 解析,然后转成了 UTF-8
- 特点
- 切换查看编码方式无效,仍然乱码
- 多次解析和转换错误难以恢复
- 解决方法
- 逆向操作:UTF-8 转换成 GB18030 再用 Windows-1252 解析查看
- 实际情况远比示例复杂。