【Linux】在bash中对文件转码

在linux中上传带有中文内容的test.csv文件。(GBK编码)
cat 的时候发现中文乱码的现象,于是在bash中对其转码。


一、相关命令

$ file --mime-encoding filename  #显示文件编码
$ iconv -l  #查看Linux 系统所支持的文件编码种类
$ iconv -f old_encoding -t new_encoding old_filename  #将转码结果打印<实质file还没转换>
$ iconv -f old_encoding -t new_encoding old_filename -o new_filename  #将转码结果存储为new_filename



二、举例

$ file --mime-encoding test.csv
iso-8859-1

$ iconv -f gbk -t utf-8 test.csv #注意这里old_encoding写的是gbk
姓名,ID
张三,1
李四,2

$ iconv -f gbk -t utf-8 test.csv -o test.csv



三、注意

  • 在 file –mime-encoding filename.csv时,显示的是iso-8859-1编码,但是实质却是GBK,所以iconv -f old_encoding -t new_encoding的时候old_encoding要写成GBK,不然会转码失败;
    <具体原因还没弄懂,望大神指导!>
    【Linux】在bash中对文件转码_第1张图片
  • iconv -f old_encoding -t new_encoding只是将转码结果打印输出,文件本质并没有转码,需要加上 -o
    【Linux】在bash中对文件转码_第2张图片

你可能感兴趣的:(系统)