在这里插入图片描述

前言

实习生很不满,我给业务统计的CSV格式表格,他们说乱码,自己就不会在Windows上面转一下编码吗?非要我在Linux上面转,为啥是乱码?Linux咋转啊?

为啥乱码

这个很明显Linux上面的文件是UTF-8的,但是本地用EXCEL打开CSV文件默认是GBK格式,编码不一致,所以就乱码咯

Linux如何转编码

自带命令 iconv
iconv -f 原编码 -t 新编码 filename -o newfile

-f : from 来源编码
-t : to 转换后新编码
-c: 忽略无效字符
-s: --silent,忽略警告
-o file : 可选,没有的话直接转换当前文件, 使用-o 保留源文件。

现实场景中常用的一套组合拳

  1. 查看文件编码
    使用file命令
    语法:
file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

参数:

-b  列出辨识结果时,不显示文件名称。
-c  详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L  直接显示符号连接所指向的文件的类别。
-m<魔法数字文件>  指定魔法数字文件。
-v  显示版本信息。
-z  尝试去解读压缩文件的内容。
[文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

举例:

file data.csv
data.csv UTF-8 Unicode text

我们可以看到data.csv格式的文件是UTF-8格式的,于是就可以利用上面的iconv命令对其进行转码为GBK格式咯

iconv -f UTF-8 -t GBK data.csv

如果需要保留data.csv源文件,那么需要加-o参数

iconv -f UTF-8 -t GBK data.csv -o data1.csv

于是就可以把转换为GBK格式的data1.csv数据发给业务的人员咯

Logo

更多推荐