## 现象 Windows / Excel 导出的 CSV 常带 UTF-8 BOM(`U+FEFF`)。当前 `parseCsv` 在识别表头时,只对首行做 `trim` + 小写 + 去掉空格/下划线/连字符,**不会剥掉 BOM**。 于是第一列表头实际变成 `\uFEFFsymbol`(或 `\uFEFF代码`),对不上 `HEADER_ALIASES`,整行要么被当成「无表头」走位置回退,要么 symbol 列错位。 ## 证据(当前 main) `packages/shared/src/portfolio-import/parsers.ts` 中: ```ts function normalizeHeaderCell(cell: string): string { return cell.trim().toLowerCase().replace(/[\s_\-]/g, '') } ``` 未处理 `\uFEFF`。`splitCsvRows` / `splitCsvLine` 也会把 BOM 留在第一个 cell 里。 ## 复现 ```text \uFEFFSymbol,Quantity,Cost AAPL.US,10,100 ``` - **实际**:首列表头匹配失败(或整表按无表头位置解析),`Symbol` 列识别不稳定。 - **预期**:BOM 被剥掉后,与无 BOM 的同内容 CSV 解析结果一致。 ## 建议修复(小范围) - 在 `normalizeHeaderCell`(或 `parseCsv` 入口)去掉 leading `\uFEFF`。 - 补一条 focused 回归:带 BOM 的英文/中文表头都能正确映射 `symbol`/`quantity`/`cost`。 ## 范围 仅 portfolio-import 解析;不改 UI。与 #356–#360(币种/会计格式/全角/零宽/符号长度)不重叠——那些 PR 未覆盖 BOM。 ## 查重 全状态搜索 BOM / `\uFEFF` / UTF-8 表头相关 open issue 未见同类。
Activity
wannT-1 commentedon Oct 30, 2026
/claim
我来修 UTF-8 BOM 表头匹配:在
normalizeHeaderCell(或 parseCsv 入口)剥掉 leading\uFEFF,并补英文/中文表头 focused 回归。提交 PR 时写Closes #407。github-actions commentedon Oct 30, 2026
@wannT-1 已认领该 Issue,并已自动设为 Assignee。提交 PR 时请在描述中写
Closes #407。