Mac OS批量文件编码转换(eg. GBK to UTF-8)

分手后的思念是犯贱 2021-09-22 03:20 852阅读 0赞

前言

本来想查看win电脑上的一些源码,奈何在Mac上都乱码了,于是网上搜集了一些解决办法,网上多数都是针对单文件的,而我的源码文件是比较多的,因此写了个脚本进行批量处理,我先介绍单文件编码转换方法,最后放上批量转换的脚本。

单文件编码转换

第一种,直接使用vi编辑器调整编码方法。输入以下命令。

  1. :set fileencoding=utf-8

第二种,使用iconv命令(Mac有,未测其他系统)。

  1. # 格式
  2. iconv -f 原始文件格式 -t 转换格式 <文件>
  3. # 例子
  4. iconv -f GBK -t UTF-8 ./util.cpp

第三种,转换dos系统文件到unix系统文件,这种方法不属于编码转换,属于换行方式转换,换行符CR+LF转换为LF 。命令可能需要安装。

  1. # dos格式转unix格式
  2. dos2unix filename
  3. # 反过来
  4. unix2dos filename

批量转换

命令只能对单个文件转换,此脚本对多个文件进行编码转换,默认进行递归扫描,默认GBK转UTF-8(不符合需要修改脚本)。

测试系统:mac os bigsur

测试效果图:

截屏2021-09-20 下午8.26.32

截屏2021-09-20 下午8.24.58

  1. #!/bin/sh
  2. # 获取文件
  3. # 可以将ls替换为find精确查找文件
  4. files=`find ${ PWD} -type f`
  5. # 当前脚本文件
  6. current_file=${ PWD}/re_encode.sh
  7. echo "current file: ${current_file}"
  8. echo "re-encode file list:"
  9. for f in ${files}
  10. do
  11. if [ ${f} != ${current_file} ]
  12. then
  13. echo "${f}"
  14. # iconv -f 原始文件格式 -t 转换格式 <文件>
  15. iconv -f GBK -t UTF-8 "${f}" > "$f.utf8encode"
  16. rm -f "${f}"
  17. fi
  18. done
  19. # 已编码文件
  20. encode_files=`find $PWD -type f -name "*.utf8encode"`
  21. for f in ${encode_files}
  22. do
  23. new_name=`echo $f | sed "s/.utf8encode//g"`
  24. mv "${f}" "${new_name}"
  25. done
  26. echo "re-encode OK :-)"

食用步骤:

第一步,复制文件到编码转换到文件夹。

第二步,执行脚本,命令如下:

  1. sh re_encode.sh

(over)

发表评论

表情:
评论列表 (有 0 条评论,852人围观)

还没有评论,来说两句吧...

相关阅读