ruby 是 Mac OS 自带的编程语言,所以无需任何安装。将下面的文本保存为 gbk2utf8.rb
#!/usr/bin/ruby#tool 4 gbk encoding to utf8src_path = $*[0]unless src_pathputs "usage #{$0[2..-1]} gbk_file"exit 1enddir_name,base_name = File.split(src_path)dst_path = dir_name << '/u8_' << base_namef_src = File.open(src_path,"r:gbk")f_dst = File.open(dst_path,"w:utf-8")f_src.each_with_index do |line,i|line.encode!("utf-8")if(i < 2)#line.gsub!(/gbk/,"utf-8") if(line =~ /^#[ ]*coding*/)line.gsub!(/gbk/,"utf-8") if(line =~ /^*coding*/)endf_dst.puts lineendf_src.closef_dst.close`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存储:
import csvimport sysif __name__ == '__main__':if len(sys.argv)<=1:print("Usage: \npython processCsv.py filename.csv")exit(0)source = sys.argv[1]destination = 'processed.csv'filenames = source.split('.')if len(filenames)>0:destination = filenames[0]+'_res.csv'with open(source, mode='r', encoding='gbk', errors='ignore') as f:with open(destination, 'w', encoding='gbk', newline='') as fw:writer = csv.writer(fw)reader = csv.reader(f)for row in reader:row.pop(0)row.pop(-1)writer.writerow(row)
