技术解析

大文件编码转换有什么工具?
0
2021-07-02 18:53:52
idczone

用 enconv 处理一个几十个 G 的文件从 GB 转 UTF8 时出错,有什么其他比较不错的办法么?

哦 当然我还知道用 UE ,有其他更适合的推荐么?


没实际操作过,可以考虑按行分割文件,处理以后再合并。

自己写个程序,按行读取,按行写入新文件。

对 这也是个办法, 谢谢

这种程序网上多得是 我并不觉得会写的更好

不是 iconv 么?

iconv,enca(enconv 会根据当前系统编码猜测要转换的目标编码,省去了-x 选项),convmv
之前找到的主流的几种吧 还有一些用 py 处理的

问题原因找到了, enca(也可以说是 iconv) 处理文件时如果遇到跟预期编码不同的字符串就会报异常,
enca: Iconv conversion error on `/tmp/encaWaQKSu': Illegal byte sequence
我的文件里包含英文、汉字、阿拉伯文、可能还有其他语言字符。当然中文是最多的,而且是 Win 下输出的文件,所以很多程序默认识别的编码都是 GB2312
这导致程序按照 GBK 处理转换 UTF8 时出现该错误,因为它发现了不符合 GBK 编码的字符串。
最后还是用 UE 打开了接近 100G 的文件,完美转换到 UTF8 ,花了大概几十分钟。

iconv 加 -c 参数

用 python 写几行代码,读文件一行行转,估计比 Ultraedit 快
ue 指的是 ultraedit 没错吧?

同意啊,用 python 写几行就搞定了哒。

最近收到同事在 windows 下直接生成的 .txt 文件,已经是 GB18030 编码了...

楼主,就是说你的文件是混合编码?



混合编码的话, python 也能处理吗?

iconv ?

混合编码的话,就写一个数组一个个试了,比如我以前写过的
codecs_list = [
"gbk",
"gb18030",
"gb2312",
"utf8",
"utf16"
]
一个个试,如果成功就返回,如果有异常就继续试
当然这种方法可能会有错误的情况发生,不过绝大部分情况是可以的

比起为什么出错 我想知道是什么奇葩设计把几十个 gb 编码不同的文本存储在一个文件里

这样也不见得行啊...也可能一行里混合几种编码(我就遇到过,试了很多办法,无解,放弃了).
或许要逐字符进行编码判断转换,但这效率... python 是有第三方作的 编码判断模块...也就那样了。

一行里混合几种编码这么 BT 那你还是放弃了吧 话说为什么有这种奇葩的情况呢...

那是个邮件相关信息的原始数据,而邮件可能千奇百怪的编码,得到的信息就可能一行记录信息混合多种编码。

不理解,邮件里用什么编码都有标清楚的吧

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服