用 enconv 处理一个几十个 G 的文件从 GB 转 UTF8 时出错,有什么其他比较不错的办法么?
哦 当然我还知道用 UE ,有其他更适合的推荐么?
|  |      1cxbig      2016-05-29 23:35:55 +08:00  1 没实际操作过,可以考虑按行分割文件,处理以后再合并。 | 
|  |      2xupefei      2016-05-29 23:41:20 +08:00  1 自己写个程序,按行读取,按行写入新文件。 | 
|  |      3Loki2015 OP  1 对 这也是个办法, 谢谢 | 
|  |      5SoloCompany      2016-05-29 23:55:36 +08:00  1 不是 iconv 么? | 
|  |      6Loki2015 OP  1 iconv,enca(enconv 会根据当前系统编码猜测要转换的目标编码,省去了-x 选项),convmv 之前找到的主流的几种吧 还有一些用 py 处理的 | 
|  |      7Loki2015 OP  1 问题原因找到了, enca(也可以说是 iconv) 处理文件时如果遇到跟预期编码不同的字符串就会报异常, enca: Iconv conversion error on `/tmp/encaWaQKSu': Illegal byte sequence 我的文件里包含英文、汉字、阿拉伯文、可能还有其他语言字符。当然中文是最多的,而且是 Win 下输出的文件,所以很多程序默认识别的编码都是 GB2312 这导致程序按照 GBK 处理转换 UTF8 时出现该错误,因为它发现了不符合 GBK 编码的字符串。 最后还是用 UE 打开了接近 100G 的文件,完美转换到 UTF8 ,花了大概几十分钟。 | 
|      8fengyqf      2016-05-30 07:37:49 +08:00  1 iconv 加 -c 参数 | 
|  |      9clino      2016-05-30 08:43:29 +08:00  1 用 python 写几行代码,读文件一行行转,估计比 Ultraedit 快 ue 指的是 ultraedit 没错吧? | 
|  |      11likuku      2016-05-30 10:03:32 +08:00  1 最近收到同事在 windows 下直接生成的 .txt 文件,已经是 GB18030 编码了... | 
|      12SpicyCat      2016-05-30 10:10:15 +08:00  1 楼主,就是说你的文件是混合编码? | 
|      14ashfinal      2016-05-30 10:22:53 +08:00  1 iconv ? | 
|  |      15clino      2016-05-30 10:41:46 +08:00  1 @SpicyCat 混合编码的话,就写一个数组一个个试了,比如我以前写过的 codecs_list = [ "gbk", "gb18030", "gb2312", "utf8", "utf16" ] 一个个试,如果成功就返回,如果有异常就继续试 当然这种方法可能会有错误的情况发生,不过绝大部分情况是可以的 | 
|  |      16murmur      2016-05-30 11:36:26 +08:00  1 比起为什么出错 我想知道是什么奇葩设计把几十个 gb 编码不同的文本存储在一个文件里 |