ruby 是 Mac OS 自带的编程语言,所以无需任何安装。将下面的文本保存为 gbk2utf8.rb

    1. #!/usr/bin/ruby
    2. #tool 4 gbk encoding to utf8
    3. src_path = $*[0]
    4. unless src_path
    5. puts "usage #{$0[2..-1]} gbk_file"
    6. exit 1
    7. end
    8. dir_name,base_name = File.split(src_path)
    9. dst_path = dir_name << '/u8_' << base_name
    10. f_src = File.open(src_path,"r:gbk")
    11. f_dst = File.open(dst_path,"w:utf-8")
    12. f_src.each_with_index do |line,i|
    13. line.encode!("utf-8")
    14. if(i < 2)
    15. #line.gsub!(/gbk/,"utf-8") if(line =~ /^#[ ]*coding*/)
    16. line.gsub!(/gbk/,"utf-8") if(line =~ /^*coding*/)
    17. end
    18. f_dst.puts line
    19. end
    20. f_src.close
    21. f_dst.close
    22. `chmod +x #{dst_path}`

    然后运行这个命令即可:ruby gbk2utf8.rb {filename}

    PS:当然也有其他的转码方法,比如导入到excel时可以选择文件的原始编码,导出时选择另一个编码。

    但是在我的电脑上,excel虽然可以打开280Mb的csv文件(里面含有90万条数据,按月整理的数据不好拆分),但是执行导入操作的时候,根本无响应,我最新款的MBP风扇呜呜响。。。

    用此脚本仅需不到5秒就能转换完成!

    ================ 2019-04-18 更新 ================

    Ruby可以,当然Python也可以做。加上一般我用Python来处理csv,索性写在一起岂不美哉?

    下面的脚本是一个简单处理csv的脚本。它的功能是删除第一列和最后一列的数据,以GBK打开,也以GBK存储:

    1. import csv
    2. import sys
    3. if __name__ == '__main__':
    4. if len(sys.argv)<=1:
    5. print("Usage: \npython processCsv.py filename.csv")
    6. exit(0)
    7. source = sys.argv[1]
    8. destination = 'processed.csv'
    9. filenames = source.split('.')
    10. if len(filenames)>0:
    11. destination = filenames[0]+'_res.csv'
    12. with open(source, mode='r', encoding='gbk', errors='ignore') as f:
    13. with open(destination, 'w', encoding='gbk', newline='') as fw:
    14. writer = csv.writer(fw)
    15. reader = csv.reader(f)
    16. for row in reader:
    17. row.pop(0)
    18. row.pop(-1)
    19. writer.writerow(row)