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