用户从表格里复制的金额校验不通过,日志里看数字长得一样却比较不相等。日志里能对上时间点,这种反而好排。

全角字符的编码与半角不同,直接比较或转数字会失败。这一点先确认清楚,后面就不用反复试。

def to_half(s):
    return s.translate(str.maketrans('0123456789.', '0123456789.'))
print(to_half('123.45'))

围绕「全角半角字符」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。改完隔一天再看一次,当场正常不代表能稳住。

处理上按这个顺序:入库前统一转半角;去除不可见字符;校验错误提示具体到字符。

结果对不对很好判断,同一笔金额无论全角半角都能正确保存,校验通过。

作者 9823189