字符编码决定文字如何从字节转换为可显示内容。一个表情或生僻字符在文件中并不是直接保存为“图形”,而是由一组字节表示;写入端和读🍀取端使用不同规则时,同一组字节就可能被误读成多个汉字。
如果原系统显示正常,导出文件已经异常,重点检查导出编码;如果文件正常、导入后异常,重点检查导入选项;如果数据库中正常、页面显示异常,重点检查页面声明、接口响应🚀和浏览器读取方式。
聊天记录中的异常字符通常最适合通过重新发送解决。发送者可以改用纯文字描述、重新输入表情,或发送截图作为补充;接收者可以更新应用和字体,但不应把一个设备上的显示结果当成所有人看到的原文。
如果用户在网页、聊天记录、表格、数据库或日志中看到馃憴馃惢,应先保留原始文件和上下文,再判断乱码出现在哪个环节。直接把当前字🌺符再次转换,可能造成二次损坏;只有找到原始文本、原始文件或正确的编码链路,才有机会可靠恢复。
数据库处理时,字段字符集、数❤️据库默认字符集、连接字符集和应用程序内部编码都需要检查。字段使用支❤️持范围更大的字符集,并不代表旧数据一定能够恢复;如果写入时已经发生替换,扩大字段容量也不能找回原文。
程序日志中的乱码应检查终端、日志文件、运行环境和查看工具是否使用同一编码。日志内容如果经过压缩、转义或多次拼接,还要确认异常字符是显示层产生,还是程序已经把错🎆误结果写入文件。