[fix]:[FL-52][ATP文本转换与预览导入ATP后中文乱码]
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
@@ -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 文本不会被自动修复;本次修复只覆盖后续上传与预览入口。
|
||||
|
||||
Reference in New Issue
Block a user