为什么CSV会出现中文乱码?
CSV是纯文本格式,不包含编码信息。当文件在不同系统间传递时,如果编码不匹配就会出现乱码。
常见编码格式
- UTF-8:国际通用编码,推荐使用
- GBK/GB2312:Windows中文系统默认编码
- UTF-8 with BOM:带字节顺序标记的UTF-8
使用在线工具转换
使用Excel转CSV工具:
1. 上传Excel文件 2. 选择需要转换的工作表 3. 工具自动输出UTF-8 with BOM编码的CSV 4. 下载CSV文件
优点:自动处理编码,中文不会乱码
编程方式转换
Python方案
import pandas as pddf = pd.read_excel('data.xlsx')
# UTF-8 with BOM(Excel打开不乱码)
df.to_csv('output_utf8_bom.csv', index=False, encoding='utf-8-sig')
# 纯UTF-8
df.to_csv('output_utf8.csv', index=False, encoding='utf-8')
# GBK(Windows记事本打开不乱码)
df.to_csv('output_gbk.csv', index=False, encoding='gbk')
JavaScript方案
const XLSX = require('xlsx');const workbook = XLSX.readFile('data.xlsx');
const csv = XLSX.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);
// 添加BOM标记
const bom = '\uFEFF';
const blob = new Blob([bom + csv], { type: 'text/csv;charset=utf-8' });
如何选择编码?
| 使用场景 | 推荐编码 | 原因 | |---------|---------|------| | 数据库导入 | UTF-8 | 大多数数据库默认UTF-8 | | Excel打开 | UTF-8 with BOM | Excel自动识别编码 | | Windows记事本 | GBK | 记事本默认GBK | | 跨平台交换 | UTF-8 | 国际通用标准 |
总结
选择正确的编码格式是CSV转换的关键。推荐使用UTF-8 with BOM编码,兼顾兼容性和通用性。