阅读口径
本文保留原字符串;操作在副本上进行,候选结果需由来源证据核对。
一个假设的故障顺序
演示场景:发送端输出 UTF-8 字节,接收端却按 GBK 解释,再把解释后的文字存成 UTF-8。此时新文件编码可能是正确的 UTF-8,里面的内容却已变成错误字符。
规范参考:WHATWG:Encoding Standard。操作场景与排查建议为本站说明。
重新打开与转存不同
重新按编码打开,是从未修改的原字节再次解释;另存为某编码,是把当前已显示的文本再次编码。若当前文字已错,直接另存为 UTF-8 只会稳定保存错误内容。
规范参考:WHATWG:Encoding Standard。操作场景与排查建议为本站说明。
编码名也要记录环境
网页使用 WHATWG 的编码算法;Python 编解码器有自己的实现与标签。对于本样本,Python 的 GBK 和 GB18030 都产生同一候选字节;不要由此推断二者对所有输入都等价。
可执行检查单
- 01保留原始文件,确认是否曾经保存过错误显示。
- 02先尝试在副本上按来源声明重新读取。
- 03只在证据支持时执行逆转换,并保存操作记录。
一个常见问题
GB18030 能替代所有 GBK 修复命令吗?
不应这样假设。处理范围、版本与非法字节行为可能不同;要使用真实处理链中的实现,并验证完整样本。
本页结论
发生过错误保存时,修复对象是文本处理链;只改一个编码标签通常不够。