UTF-8 边界误判速查

核心:完整文件合法,不代表任意字节切片都能作为“完整文本”严格解码。

为什么

本次故障链路

合法 SKILL.md
  -> 截取前 4096 字节
  -> 最后一个中文字符只保留了部分字节
  -> strict TextDecoder 抛错
  -> isLikelyBinary() 返回 true
  -> 数据库存储 is_binary = 1
  -> UI 显示“二进制文件暂不支持在线预览”

排查清单

  1. 完整 buffer 能否严格解码?
  2. 检测代码是否只解码固定长度样本?
  3. 样本是否可能截断多字节字符?
  4. 是否把“样本不完整”和“文件非法”混为一谈?
  5. 错误字段是在导入时写入,还是前端临时计算?

常见修复方向