版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/codemanship/article/details/40340419
Windows用户在使用Excel处理数据文件时都不会关心文件的编码,因为Excel支持Windows上默认使用的简体中文编码GB2312。但是,使用MAC的用户就没有那么省心了,一不小心就会碰到中文乱码的问题。
在Mac上的Excel中为什么会出现中文乱码的情况呢?这是就需要了解一些文件编码的背景知识。
文件在计算内部采用的是二进制(0和1)的形式存放,那么给定一个0和1组成的串,计算机怎么知道这个串代表的是英文中的’a’还是中文里面的’好’?这时就需要用到文件的编码,不同的编码告诉了计算机怎么去识别文件的内容,例如GB2312编码告诉计算机’001’代表的是中文里面的’好’,而UTF8编码告诉计算机’001’代表的是英文里面的’a’(这个例子只是为了简述文件编码的作用,实际上的编码比这个复杂得多)。
由于UTF-8编码同时支持中文、还是日文、韩文、阿拉伯文在类的各种语言,所以它在Mac中被广泛使用,而目前Mac上的Excel在导入CSV文件时虽然给出了UTF8的选项,但是导入以后的中文还是乱码,这是因为它实际上是不支持UTF8编码方式导致的,至少对于Excel 2011 for Mac是这样。
那么怎么解决这个问题呢,方法很简单:将文件的编码方式由UTF8转为Excel支持的中文编码方式,Mac上的iconv工具专门就可以用来干这个事情。例如,在Excel给出的中文编码方式中有GB18030,那么我们可以通过Mac上的iconv工具将文件编码由UTF8转为GB18030。只需要在命令行中键入如下的命令:
iconv -f UTF8 -t GB18030 源文件.csv >新文件.csv
就可以将“源文件.csv”文件的编码方式由UTF8 变为GB18030并写入到“新文件.csv”文件中,在Excel中导入“新文件.csv”文件中的内容,我们会发现烦人的中文乱码消失的无影无踪了!
差点忘了最重要的一个问题,使用iconv的前提是我们知道文件的编码,那么Mac上怎么知道文件的编码呢?其实很容易啦,首先用Mac自带的编辑器vim打开文件,然后使用命令
:setfileencoding
vim就会在屏幕的下方显示文件的编码。