“导出编码问题”通常出现在把数据(Excel、CSV、数据库、网页、日志等)导出成文件,或在不同系统/语言之间传输时,出现中文乱码、问号、方块、EOF 错误、无法打开等情况。
下面按常见场景 + 解决办法给你一套通用处理思路。
很多系统(如 Linux、Java、Python)导出的是 UTF-8 无 BOM,但 Excel(Windows)打开会乱码。
✅ 解决方法:
加 BOM
with open("data.csv", "w", encoding="utf-8-sig") as f:
f.write(...)
new OutputStreamWriter(out, "UTF-8");
// 手动写入 EF BB BF
或用 Excel 导入向导(数据 → 从文本 → 选 UTF-8)
❌ 不要用 Excel 直接改编码
✅ 用:
检查三处编码是否一致:
SHOW VARIABLES LIKE '%character%';
✅ 推荐统一为:
utf8mb4
导出示例:
mysqldump --default-character-set=utf8mb4 ...
常见 NLS_LANG 问题:
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
Content-Type: text/csv; charset=utf-8
const blob = new Blob(["\ufeff" + csv], {
type: "text/csv;charset=utf-8;"
});
先确认文件真实编码:
file filename
转换编码:
iconv -f gbk -t utf-8 input.txt > output.txt
导出前问自己 4 个问题:
你可以直接告诉我:
我可以给你精确到代码级别的解决方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。