我这里有很多数据都是 UTF-8 格式编码的 CSV 文件,无法用 Excel 进行编辑,请问还有哪些支持 UTF-8 编码的 CSV 编辑器?
最好是支持 Linux 平台的,如果只支持 WIndows 平台也可以。先谢谢大家了!
我这里有很多数据都是 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编码方式一致,故我未能发现错误。
啊,这……原来还有这么回事,张知识了
VSC + CSV 插件似乎可以?
可以给个链接吗?我去看看
这种情况我来的话,直接几行代码把全部文件转为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以外的编码
EmEditor可以
原来如此,多谢指点!
MS Excel 2019、2021 已经解决这个问题了,在 “另存为” 对话框中,可以将保存文件格式设置为 “CSV UTF-8”。
另外那个 “CSV” 选项,保存得到的还是用 ANSI 编码的 CSV 文件。
谢谢,但 EmEditor 的 CSV 编辑模式需要买高级版,那玩意儿对我而言太贵了,买不起。
啊这,我差点把 LibreOffice Calc 给忘了。目前来看这确实是最好的解决方案了,原生支持 Linux,而且支持包括 UTF-8 在内的多种编码。
不过它和 Excel 都有一个通病:会擅自修改内容,比如 1.200
会被改成 1.2
,1-1
会被改成 25年1月1日
LibreOffice Calc 那边找到解决方法了:在导入 CSV 的对话框中,把有问题的列的类型改成 “文本” 即可。
刚刚找到一个软件:Modern CSV
1.1000
变成 1.1
、1-1
变成 1月1日
。但也有问题:
错误的,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 里面的数据后续是要给其他程序做分析的。