使用指南发布日期 阅读时间约 8 分钟

CSV用Excel打开乱码怎么办|UTF-8(带BOM)与GBK的区分使用

从网站或系统下载的CSV,双击用Excel打开后,“姓名,地址”变成了“濮撳悕,鍦板潃”。这并不是CSV内容坏了,只是Excel认错了字符编码。本文整理了乱码的原因、把现在这个CSV正确打开的方法、以后不再乱码的保存方法(UTF-8带BOM·GBK),以及转换时会丢失的字符。

Excel会把没有BOM的CSV当作GBK读取

现在的网站和系统导出的CSV几乎都是UTF-8。而简体中文版Windows的Excel在双击打开CSV时,如果文件开头没有“这是UTF-8”的标记(BOM),就会按系统的旧编码GBK(代码页936)来读取。用GBK读UTF-8的中文,就会像下面这样乱码。

原始内容在Excel中的样子(把UTF-8当作GBK读取)
姓名,地址濮撳悕,鍦板潃
商品名称,价格鍟嗗搧鍚嶇О,浠锋牸
张三,北京市海淀区寮犱笁,鍖椾含甯傛捣娣�鍖�

BOM(字节顺序标记)是放在文件开头的EF BB BF这3个字节,画面上不会显示。有了BOM,Excel就会正确地按UTF-8读取。也就是说,以“UTF-8(带BOM)”保存的CSV,双击打开也不会乱码。只有英文和数字的CSV在UTF-8和GBK里是相同的字节,所以不会乱码,只有包含中文时才乱码,原因也在这里。日文版Windows用Shift_JIS、韩文版用CP949,机制完全相同。

把正在乱码的CSV正确打开的方法

  1. 1

    从Excel的“数据”选项卡导入

    打开空白工作簿,在“数据”选项卡 →“从文本/CSV”中选择文件。在预览界面的“文件原始格式”中选“65001: Unicode (UTF-8)”,确认中文显示正常后再导入。

  2. 2

    转换成带BOM的UTF-8后再打开

    把文件放进乱码还原·解读工具的“文件·CSV”,会判断字符编码、有无BOM和换行符。选择“UTF-8(带 BOM)”后“转换并保存”,得到的文件双击也能在Excel中正常打开。

  3. 3

    用在线表格打开

    WPS表格、Google表格、Mac的Numbers等大多能直接读取UTF-8的CSV。只是查看内容的话这样就够了,但打开GBK的CSV时反而可能乱码。

如果手头只有乱码的文字(CSV内容被直接贴进了邮件等),很遗憾往往无法完全还原。把UTF-8当作GBK读取时,凑不成对的字节会变成“�”被丢弃,像上面“海淀区”那样有些字已经找不回来。请向对方索要原始文件,再用上面的方法打开。

按接收方选择保存方式

接收方推荐的字符编码理由
用Windows的Excel打开的人UTF-8(带BOM)双击不乱码,表情符号和生僻字也能保留
老旧的业务系统·财务软件导入GBK导入端往往只能读取GBK
程序·数据库·APIUTF-8(无BOM)防止开头的BOM混进第1列的列名
Mac·Google表格UTF-8有无BOM都能读取

用Excel保存时,在“另存为”的文件类型中选择。“CSV UTF-8(逗号分隔)”保存为带BOM的UTF-8,“CSV(逗号分隔)”在简体中文版Windows中保存为GBK。换行符方面,面向Windows软件用CRLF,面向Mac·Linux或程序用LF。从网页工具导出的CSV,比如用手机计数器统计的交通量调查汇总表,只要是带BOM的UTF-8,也能直接用Excel打开(交通量调查的做法与汇总表的制作)。

转换成GBK时会丢失的字符

UTF-8几乎能表示所有字符,但GBK能表示的字符是有限的。把UTF-8的CSV转换成GBK时,无法表示的字符会变成“?”,而且无法还原。GBK能否表示,大致如下。

字符在GBK中备注
常用简体字·繁体字可以表示GBK也收录了大量繁体字
①·é·ü可以表示带圈数字和部分拼音字母已收录
𠮷 等扩展区汉字无法表示UTF-8中是4字节的字,常见于生僻姓名
한국어(韩文)无法表示包含韩文姓名时请使用UTF-8
🍣等表情符号无法表示会变成“?”

需要GBK的CSV时,请先找出无法表示的字符,按导入端的规则改写或删除后再保存。人名中的生僻字如果被改写,可能会被当作别人处理,最好先与导入端确认。如果导入端支持GB18030,所有汉字和表情符号都能表示,比GBK更安全。

常见问题

CSV用Excel打开为什么会乱码?
因为Excel把以UTF-8保存的CSV当作GBK读取了。简体中文版Windows的Excel会把开头没有BOM的CSV按GBK打开。重新保存为UTF-8(带BOM),或从“数据”选项卡指定编码导入,就不会乱码。
带BOM的UTF-8和不带BOM的UTF-8有什么区别?
区别在于文件开头有没有EF BB BF这3个字节(BOM)。里面的文字相同,但有BOM时Excel会按UTF-8读取。交给程序或数据库时,BOM可能混进第1列的列名,所以不带BOM更合适。
对方要求GBK格式的CSV,怎么转换?
在简体中文版Windows的Excel中用“CSV(逗号分隔)”保存,就会是GBK。表情符号、扩展区的生僻字、韩文等GBK中没有的字符会变成“?”,请先修改。如果对方的系统支持GB18030,用它更不容易丢字。
在Mac上CSV也乱码。
Mac版Excel打开没有BOM的UTF-8 CSV时也可能乱码。请从“数据”选项卡指定编码导入,或转换成UTF-8(带BOM)。反过来,Windows导出的GBK CSV用Numbers等以UTF-8为前提的应用打开会乱码,这时请转换成UTF-8。

本文介绍的工具

相关文章

使用指南约 15 分钟

呼吸法怎么做|4-7-8呼吸法、箱式呼吸、共振呼吸的区别与选择

睡不着的夜晚、考试或面试之前、怎么也压不下去的烦躁。别人总说“深呼吸一下”,可到底该吸几秒、呼几秒,又该选哪种呼吸法,其实很少有人说得清。本文以每分钟呼吸次数和“呼气÷吸气”的比例为标准,比较并讲解5种常见呼吸法(4-7-8呼吸法、箱式呼吸、共振呼吸、生理性叹息、腹式呼吸)的秒数与做法。同时整理了呼吸为什么能让人平静下来的原理、睡前、紧张、烦躁等不同场景该怎么选、感到难受时如何调整、安静时呼吸频率的测量方法,以及不适合做呼吸练习的场合。

阅读文章 →
原理解说约 16 分钟

全银格式是什么?日本综合转账·工资转账数据的制作方法与 120 字节布局

在日本,公司通过网上银行一次性发起几十笔转账时,银行常会要求“请导入全银格式的文件”。全银格式是日本全国银行协会(全银协)规定的转账数据写法:每行固定 120 字节的定长文本,由表头·数据·尾部·结束四种记录组成。本文按实际工作中容易卡住的顺序,介绍综合转账·工资转账·奖金转账的区别,各记录的项目和位数(第几字节写什么),把收款人名改成半角片假名的规则和「カ)」「(カ」法人略称,邮储银行记号番号的换算,用 Excel·CSV 制作的步骤,以及导入出错的原因和修改方法。

阅读文章 →
原理解说约 15 分钟

抽卡概率的计算方法|多少抽能出?保底·歪卡·满命的期望值

以为“出货率 1%,100 抽总该出了”,结果就是没出。这并不是特别倒霉:1% 抽 100 次至少出 1 个的概率本来就只有约 63%。本文用实际算出的数字,整理了“抽 n 次能出的概率”的公式、出货率×抽数速查表、一半的人和 10 人中 9 人出货所需的抽数、有保底和歪卡(大保底)时的平均与最坏抽数、保底计数的继承、满命(7 个)所需的抽数,以及随机吧唧·卡牌集齐全套要买几个。

阅读文章 →