You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取二进制SQL脚本解码后仍含空字节无法正则匹配如何解决

问题原因

你手中的SQL文件实际为UTF-16编码(Windows平台导出的文件常采用该编码),并非你预设的UTF-8编码。UTF-16编码中每个ASCII字符占用2字节,低位存储字符本身、高位补0,所以用UTF-8解码后就会出现大量\x00空字节。

解决方案

方案1:读取文件时直接指定正确编码(推荐)

不需要以二进制模式读取,直接指定编码读取文本即可:

with open('data.sql', 'r', encoding='utf-16', errors='replace') as f:
    var_text = f.read()

方案2:对已读取的二进制内容重新解码

如果已经拿到了二进制变量var,直接用UTF-16解码即可:

var_text = var.decode('utf-16', errors='replace')

如果解码后开头出现多余的BOM标识\ufeff,可以加一步清理:

var_text = var_text.lstrip('\ufeff')

临时兼容方案

如果不想重新解码,也可以直接移除现有字符串中的空字节:

var_text = var_text.replace('\x00', '')

处理完成后字符串就没有多余空字节,可以正常执行正则匹配等操作。

内容的提问来源于stack exchange,提问作者Todd Shannon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:45:02