技术与生活 / 一篇记录
中文文件换台机器就乱码,先查默认编码
文件在磁盘上只是字节,读取时才按指定编码变成字符串。同一段代码依赖平台默认值,容易在开发机正常、计划任务或另一台服务器上失败。
先明确这里的区别
同一文件在不同系统上使用默认编码,可能出现不可复现的解码错误。
以下示例使用 Python 3,文件路径和输入值均为练习样本。
with open('demo.txt', encoding='utf-8') as f:
print(f.read())
怎样判断处理正确
先写入包含中文的 UTF-8 样本,再核对读回内容。
明确输入编码后再选择错误处理策略。忽略解码错误可能悄悄丢失字符;用于数据迁移时,应该优先报告异常字节的位置,而不是直接把错误吞掉。
如果文件来自多种来源,应让导入接口携带编码说明,或者在受控范围内做格式识别。不要靠循环尝试所有编码并接受第一份结果,因为“能解码”不代表文字就一定正确。
需要留意的是,明确编码不等于文件本身就是该编码,输入来源仍需确认。
参考:Python 文档。