用 enconv 处理一个几十个 G 的文件从 GB 转 UTF8 时出错,有什么其他比较不错的办法么?
哦 当然我还知道用 UE ,有其他更适合的推荐么?
1
cxbig 2016-05-29 23:35:55 +08:00 1
没实际操作过,可以考虑按行分割文件,处理以后再合并。
|
2
xupefei 2016-05-29 23:41:20 +08:00 1
自己写个程序,按行读取,按行写入新文件。
|
3
Loki2015 OP 对 这也是个办法, 谢谢
|
5
SoloCompany 2016-05-29 23:55:36 +08:00 1
不是 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 下输出的文件,所以很多程序默认识别的编码都是 GB2312 这导致程序按照 GBK 处理转换 UTF8 时出现该错误,因为它发现了不符合 GBK 编码的字符串。 最后还是用 UE 打开了接近 100G 的文件,完美转换到 UTF8 ,花了大概几十分钟。 |
8
fengyqf 2016-05-30 07:37:49 +08:00 1
iconv 加 -c 参数
|
9
clino 2016-05-30 08:43:29 +08:00 1
用 python 写几行代码,读文件一行行转,估计比 Ultraedit 快
ue 指的是 ultraedit 没错吧? |
11
likuku 2016-05-30 10:03:32 +08:00 1
最近收到同事在 windows 下直接生成的 .txt 文件,已经是 GB18030 编码了...
|
12
SpicyCat 2016-05-30 10:10:15 +08:00 1
楼主,就是说你的文件是混合编码?
|
14
ashfinal 2016-05-30 10:22:53 +08:00 1
iconv ?
|
15
clino 2016-05-30 10:41:46 +08:00 1
@SpicyCat 混合编码的话,就写一个数组一个个试了,比如我以前写过的
codecs_list = [ "gbk", "gb18030", "gb2312", "utf8", "utf16" ] 一个个试,如果成功就返回,如果有异常就继续试 当然这种方法可能会有错误的情况发生,不过绝大部分情况是可以的 |
16
murmur 2016-05-30 11:36:26 +08:00 1
比起为什么出错 我想知道是什么奇葩设计把几十个 gb 编码不同的文本存储在一个文件里
|