根本原因是Excel不读UTF-8 BOM而误判编码,需用utf-8-sig(Python)或手动加ufeff(Node.js);HEX用于无损保留二进制字段,非整文件转换,导入时须用decode()/UNHEX()还原。
导出 CSV 时中文/emoji 出现乱码或问号
根本原因不是编码选错了,而是 excel 默认用 gbk(windows)或 iso-8859-1(旧版 macos)打开 utf-8 文件,且不读 bom。直接写 utf-8 没用,得加 bom 才能被 excel 正确识别。
- Python 用
open(..., encoding='utf-8-sig')——utf-8-sig会自动在开头写 BOM - Node.js 用
Buffer.from('ufeff' + csvContent, 'utf16le')或第三方库如papaparse配置encoding: 'UTF-8'+ 手动 prependufeff - 别用
utf-8直接写文件再双击打开,Excel 看不到 BOM 就当 ANSI 处理,中文全变乱码
需要保留原始字节(比如调试协议、日志分析)时用 HEX 输出
HEX 不是为“好看”或“兼容”,而是为了无损还原二进制内容。比如某字段存的是加密后的 bytes、设备返回的原始报文、或含控制字符(