You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL生成带表头CSV文件时UNION排序规则冲突与乱码问题

方案1:添加UTF8 BOM头(优先推荐)

这个方案不需要修改表的字符集,也不需要处理编码转换,从根源解决Excel识别UTF8编码异常的问题:
Excel默认不会主动识别无BOM的UTF8编码文件,只要在导出的CSV文件开头插入UTF8 BOM头(固定二进制值0xEFBBBF),Excel就会正常识别UTF8编码,不会出现乱码。
修改后的SQL语句如下:

SELECT 
    0xEFBBBF, -- 插入UTF8 BOM头
    'Erheüößbungsstelle', 
    'Bevorzugtes PLZ Gebiet',
    'alternatives PLZ Gebiet',
    'Vorname',
    'Nachname',
    'Geburtsdatum'
UNION ALL
SELECT 
    '', -- BOM头对应的空列,不影响内容
    mitarbeite.region,
    mitarbeite.preferred_regions_primary,
    mitarbeite.preferred_regions_secondary,
    mitarbeite.firstname,
    mitarbeite.lastname,
    mitarbeite.birthday
FROM mitarbeite
WHERE mitarbeite.region = 'Kiel' 
INTO OUTFILE 'd:/TransferMysql/Kiel20211115.csv' 
FIELDS TERMINATED BY ';' 
ENCLOSED BY '"' -- 可选,避免字段内容包含分隔符时格式错乱
LINES TERMINATED BY '\r\n';

方案2:修正字符集适配Windows ANSI

你之前用的cp1250是中欧字符集,不支持德语的ß等特殊字符,德语区Windows默认的ANSI编码是cp1252,替换字符集即可解决表头乱码问题:

  1. 建表时将所有字符集和排序规则替换为cp1252和cp1252_general_ci
  2. 表头转换编码时指定cp1252和对应排序规则,避免UNION报错,示例写法:
SELECT 
    CONVERT('Erheüößbungsstelle' USING cp1252) COLLATE cp1252_general_ci,
    CONVERT('Bevorzugtes PLZ Gebiet' USING cp1252) COLLATE cp1252_general_ci,
    CONVERT('alternatives PLZ Gebiet' USING cp1252) COLLATE cp1252_general_ci,
    CONVERT('Vorname' USING cp1252) COLLATE cp1252_general_ci,
    CONVERT('Nachname' USING cp1252) COLLATE cp1252_general_ci,
    CONVERT('Geburtsdatum' USING cp1252) COLLATE cp1252_general_ci
UNION ALL
SELECT 
    mitarbeite.region,
    mitarbeite.preferred_regions_primary,
    mitarbeite.preferred_regions_secondary,
    mitarbeite.firstname,
    mitarbeite.lastname,
    mitarbeite.birthday
FROM mitarbeite
WHERE mitarbeite.region = 'Kiel' 
INTO OUTFILE 'd:/TransferMysql/Kiel20211115.csv' 
FIELDS TERMINATED BY ';' 
LINES TERMINATED BY '\r\n';

内容的提问来源于stack exchange,提问作者Klatty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:15:04