求推荐支持 UTF-8 编码的、免费的 CSV 编辑器

我这里有很多数据都是 UTF-8 格式编码的 CSV 文件,无法用 Excel 进行编辑,请问还有哪些支持 UTF-8 编码的 CSV 编辑器?

最好是支持 Linux 平台的,如果只支持 WIndows 平台也可以。先谢谢大家了!

好奇一下,为什么不能使用Excel编辑,我的Microsoft Office 2010中的Excel是支持UTF-8编码的

我这边确实是不行,MS Office 2021,打开 UTF-8 编码的 CSV 文件就会乱码。

还有,我这里的打开,是直接双击 CSV 文件、用 Excel 打开,不是在 Excel 里面导入 CSV 文件的数据。

您是正确的,如果只有ASCII字符的话,无BOM UTF8和ANSI编码方式一致,故我未能发现错误。

啊,这……原来还有这么回事,张知识了 :+1:

VSC + CSV 插件似乎可以?

1 个赞

可以给个链接吗?我去看看

这种情况我来的话,直接几行代码把全部文件转为gbk编码,用Excel编辑完再一键全部转回utf8

也不是不行,就是文件太多,有点麻烦……

那么尝试制作一个补丁,为office提供相关支持?C语言就能实现。原理上不难,但是调试估计很麻烦…
楼下有更优解法


补充:您是否使用了不带bom的utf8编码格式?请尝试在记事本另存为中查看是否有“带BOM的UTF8”,以此保存,再检查。
不用检查了,但是乱码的原理可以看一下

BOM(用于指示编码类型的文件头)经常是导致乱码的罪魁祸首。
Linux等系统中,UTF-8一般不带BOM。而Windows因为支持八万年前的ANSI编码,所以在Windows中无BOM就有两种情况:
1,不带BOM的UTF-8
2,ANSI
因为没有BOM,谁也不知道谁是谁。它们表示ASCII的时候完全无异,所以只有英文就还好,但是一旦出现其他语言,就全乱套了…连早期Windows自己的记事本关闭后再打开都有可能认错编码。
区分UTF8或ANSI的解决办法:
1,手动指定
2,逐个读取字符。如果某个字符不属于UTF8或ANSI,则可以确认该文本编码为另一者

而Microsoft office就很奇怪,它支持打开许多许多编码格式(也包括带BOM的UTF8,不带BOM的UTF8需要手动指定编码)的csv,但是却不支持保存为除了ANSI以外的编码

1 个赞

EmEditor可以

LibreOffice可以正确打开并编辑的,如下图所示,编码完全可以自定义

2 个赞

原来如此,多谢指点!

MS Excel 2019、2021 已经解决这个问题了,在 “另存为” 对话框中,可以将保存文件格式设置为 “CSV UTF-8”。

另外那个 “CSV” 选项,保存得到的还是用 ANSI 编码的 CSV 文件。

1 个赞

谢谢,但 EmEditor 的 CSV 编辑模式需要买高级版,那玩意儿对我而言太贵了,买不起。

啊这,我差点把 LibreOffice Calc 给忘了。目前来看这确实是最好的解决方案了,原生支持 Linux,而且支持包括 UTF-8 在内的多种编码。

不过它和 Excel 都有一个通病:会擅自修改内容,比如 1.200 会被改成 1.21-1 会被改成 25年1月1日


LibreOffice Calc 那边找到解决方法了:在导入 CSV 的对话框中,把有问题的列的类型改成 “文本” 即可。

刚刚找到一个软件:Modern CSV

  • 收费的,付费版有很多扩展功能(但对我而言用不上),免费版足以满足日常编辑需求。
  • 原生支持 Linux、Windows 和 macOS。
  • 按原样呈现数据,不会把 1.1000 变成 1.11-1 变成 1月1日
  • 支持向 WPS 表格那样高亮当前行列。
  • 自动冻结首行(标题行)。

但也有问题:

  • 菜单栏里的功能很多、恨乱,有时候找一个功能得看半天。
  • 在 Linux 上不支持 Fcitx 5 输入法。

错误的,Excel不是不支持UTF-8 CSV,而是对于UTF-8 CSV,它只认带BOM的
你试试给你的UTF-8 CSV加上BOM看看

CSV并没有明确的标准,所以微软就用它自己那套识别方法,凡是不带BOM都识别为非UTF-8,就会用本地化编码打开,比如简中的几种GB编码,所以就出问题了
如果只需要数据,不需要点开就编辑的话,可以导入数据到Excel,这样是不会有兼容问题的,这也是建议的方法,因为上面说了,CSV并无明确标准,直接打开会有兼容性问题

如果想直接打开不带BOM的UTF-8 CSV,可以用LibreOffice Calc,支持Windows、Linux
Calc比Excel方便,Excel在导入的时候才会有预览,而Calc打开就有预览了,Calc还能直接在打开的时候选择编码

你说的这个情况就是默认格式为常规,无论Excel还是Calc都是这样
如果你数据多是文本,也可以直接设置默认格式为文本,就不用每次都改了

感谢指点。

这也是我现在采用的方案。

请问 LibreOffice Calc 有办法设置打开 CSV 时默认格式为文本吗?

我都是把所有文本一律加上引号再识别(

似乎可以写个小程序解决此问题?

这个对我而言不适用,因为 CSV 里面的数据后续是要给其他程序做分析的。