Repository navigation
fix(editor): preserve original text file encoding - #523
Conversation
c5b96e6 to
53ce910
Compare
53ce910 to
b71d4e6
Compare
冲突只有两处上下文搬迁,均在 src/index.ts: - 导入块:保留 dev 的 fs-batch / active-worktree 两行(含其注释),其后追加 PR 的 text-encoding 导入。 - fs.write:保留 dev 的写路由新形状(每请求唯一临时名 + flag:'wx'), 并把 PR 的 encodeText(content, encoding) 接进去(encoding 仍在重命名前 用 encodingOfFile(path) 从磁盘上的原文件探测)。 一并修掉证据实测的截断误判:读上限(readLimit / 64KiB 嗅探窗口)落在多字节 字符中间时,残留的部分字节会被 GBK 探测当成一个合法双字节字,导致 > 上限的 UTF-8 文件整段乱码、保存还可能按错编码落盘(Node v26 实测:三字节汉字缺 2 字节时 utf8=fatal 失败、gbk=成功)。现 decodeTextBytes 接受 truncated 标记, 在截断且尾部确为不完整 UTF-8 序列时按 UTF-8 处理(内容仍沿用原先的 U+FFFD 渲染);完整但不合法的尾部序列照旧交给传统编码探测。测试补齐:单测(三字节 / 四字节截断、完整非法序列不被误裁、>64KiB 嗅探边界)+ 路由级(GBK round-trip、 512KiB readLimit 截断的中文 UTF-8 读取)。 Refs omdsh-dev#523
|
已把 dev 侧的解冲突结果回填到这个分支,基分支改为 冲突 2 处,都在 另外我修了你顺手提到的那个「截断误判」(它确实会误伤):大文件按 配套加了测试: 门禁: |
说明
Windows 中文环境中的 GBK/CP936 脚本和配置文件此前会被内置编辑器直接按 UTF-8 解码,导致中文乱码;同时编辑后保存会固定以 UTF-8 写回,存在静默改变原文件编码的问题。
Duplicate report: #506;canonical issue: #406。
改动
验证
pnpm typecheckpnpm testpnpm buildFixes #406