[fix]:[FL-52][ATP文本转换与预览导入ATP后中文乱码]

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
chengkai3
2026-06-08 23:39:37 +08:00
parent c661591b7c
commit 8dc443b2b7
4 changed files with 174 additions and 1 deletions
+24
View File
@@ -92,3 +92,27 @@
- 风险与关注点:
- 当前本地环境仍不具备完整后端依赖,无法直接回归所有 FastAPI/SQLAlchemy 相关测试;本次验证聚焦在 Wine 探测逻辑和语法层面。
## Work Log - 修复 ATP 文本上传中文乱码(2026-06-08
- 背景:
- `ATP文本转换与预览` 页面上传 `.atp/.txt` 文件时直接使用 `file.text()`,浏览器会按 UTF-8 解码。
- 现场 ATP 文件常见为 Windows 导出的 GBK/GB18030 文本,导致导入后编辑区和转换预览中的中文注释/名称乱码。
- 本次处理:
- `web/src/lib/text-file.ts`
- 新增前端文本解码工具,优先识别 BOM、兼容无 BOM 的 UTF-16,并在 UTF-8 严格解码失败时回退到 `GB18030`
- `web/src/app/admin/power-lines/atp-viewer/page.tsx`
- 上传 ATP 文本时改为基于 `arrayBuffer + TextDecoder` 自动判定编码,不再固定走 UTF-8。
- `web/src/lib/text-file.test.js`
- 补充最小测试,覆盖 `UTF-8``GB18030(兼容 GBK)`、无 BOM `UTF-16LE` 三类输入。
- 验证:
- 基线:`npm_config_cache=/tmp/npm-cache npm --workspace web exec tsc --noEmit` 通过;`npm_config_cache=/tmp/npm-cache npm --workspace web exec eslint src/app/admin/power-lines/atp-viewer/page.tsx` 通过。
- 修改后:
- `npm_config_cache=/tmp/npm-cache npm --workspace web exec tsc --noEmit`
- `npm_config_cache=/tmp/npm-cache npm --workspace web exec eslint src/app/admin/power-lines/atp-viewer/page.tsx src/lib/text-file.ts src/lib/text-file.test.js`
- `node --test web/src/lib/text-file.test.js`
- 风险与关注点:
- 已经以错误编码写入数据库的历史 ATP 文本不会被自动修复;本次修复只覆盖后续上传与预览入口。