enca 和 enconv 转换超大文件出错

sh/bash/dash/ksh/zsh等Shell脚本
回复
frankguxf
帖子: 3
注册时间: 2010-03-25 0:22

enca 和 enconv 转换超大文件出错

#1

帖子 frankguxf » 2010-04-21 2:49

我有一个超过1.8G的数据文本文件,转换为utf-8后会超过2G,这时候无论用enca 或 enconv转换都出现“Cannot close file t.csv: File too large”。如何解决?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: enca 和 enconv 转换超大文件出错

#2

帖子 eexpress » 2010-04-21 10:34

那就直接iconv
● 鸣学
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: enca 和 enconv 转换超大文件出错

#3

帖子 eexpress » 2010-04-21 10:35

或者试试管道过滤转换
cat xxx|enca >yyy
● 鸣学
frankguxf
帖子: 3
注册时间: 2010-03-25 0:22

Re: enca 和 enconv 转换超大文件出错

#4

帖子 frankguxf » 2010-04-21 11:15

用第二个方法解决了,cat 2.csv | enca -c >3.csv

其实用iconv的时候出了另外的错,不知道为啥总提示:
iconv -f gb18030 -t utf-8 2.csv -o 3.csv
iconv: 由于写入输出时出现的问题转换停止

采用GB2312转出现:
iconv -f gb2312 -t utf-8 2.csv -o 3.csv
iconv: 未知 38319 处的非法输入序列

采用GBK转出现:
iconv -f gbk -t utf-8 2.csv -o 3.csv
iconv: 未知 47604161 处的非法输入序列

是否有可能让iconv忽略这种错误呢?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: enca 和 enconv 转换超大文件出错

#5

帖子 eexpress » 2010-04-21 12:25

非法输入序列。说明你指定的编码不对。iconv不认而已。
你看下man。可以列表看支持的编码。看是不是cp936这样的写法。
● 鸣学
frankguxf
帖子: 3
注册时间: 2010-03-25 0:22

Re: enca 和 enconv 转换超大文件出错

#6

帖子 frankguxf » 2010-04-23 18:16

好的,我再学习一下。enca是自动检查编码的,iconv需要指定编码。是不是说这个文本里存在2种编码的文本,因此用iconv转换失败了?
回复