小洪維尼 发表于 2018-8-25 13:37:53

linxu shell iconv 转码问题

  一、查看文件编码。
  在打开文件的时候输入:set fileencoding
  即可显示文件编码格式。
  二、文件编码转换
  1、在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
  在打开的文件中输入:set fileencoding=utf-8
  2、使用iconv转换,iconv的命令格式如下:
  iconv -f encoding -t encoding inputfile
  比如将一个 编码的文件转换成GBK编码
  iconv -f UTF-8 -t GBK file1 -o file2
  iconv的用法:
  用法: iconv [选项...] [文件...]
  Convert encoding of given files from one encoding to another.
  输入/输出格式规范:
  -f, --from-code=NAME       原始文本编码
  -t, --to-code=NAME         输出编码
  信息:
  -l, --list               列举所有已知的字符集
  输出控制:
  -c                         从输出中忽略无效的字符
  -o, --output=FILE          输出文件
  -s, --silent               suppress warnings
  --verbose            打印进度信息
  -?, --help               给出该系统求助列表
  --usage                给出简要的用法信息
  -V, --version            打印程序版本号
  将GB2312编码的文件内容转换为UTF-8
  iconv -f GB2312 -t UTF-8 file-name > new-file-name
  将UTF-8编码的文件内容转换为GB2312
  iconv -f UTF-8 -t GB2312 file-name > new-file-name
  注意:转换前一定要将重要的文件备份,特别是转换文件内容的时候
  三、文件名编码转换:
  从linux往windows拷贝文件或者从windows往Linux拷贝文件,有时会出现中文文件名乱码的情况,出现这种问题的原因是因为,windows的文件名 中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致,所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码。
  在Linux中专门提供了一种工具convmv进行文件名编码的转换,可以将文件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。
  1、先看一下你的系统上是否安装了convmv,如果没安装的话在终端输入下面的命令安装:
  sudo yum -y install convmv
  2、下面看一下convmv的具体用法:
  convmv -f 源编码 -t 新编码 [选项] 文件名
  常用参数:
  -r 递归处理子文件夹
  --notest 真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
  --list 显示所有支持的编码
  --unescap 可以做一下转义,比如把%20变成空格
  比如我们有一个utf8编码的文件名,转换成GBK编码,命令如下:
  convmv -f UTF-8 -t GBK --notest utf8编码的文件名

页: [1]
查看完整版本: linxu shell iconv 转码问题