linux 下 iconv 转换文件格式出错
今天在linux 下导出一份excel 之后,用命令iconv 转换一个utf8 文件的时候出错,但是同时做了两个转换,一个是可以的。一个提示错误,然后文件内容只转换了一半。iconv: illegal input sequence at position 5040后来找了资料,才知道原因:a、在做编码转换的时候,如果你的源格式设定为 GB2312 的话,而且在转换成 UTF-8 的时候,发现
今天在linux 下导出一份excel 之后,用命令iconv 转换一个utf8 文件的时候出错,但是同时做了两个转换,一个是可以的。一个提示错误,然后文件内容只转换了一半。
iconv: illegal input sequence at position 5040
后来找了资料,才知道原因:
a、在做编码转换的时候,如果你的源格式设定为 GB2312 的话,而且在转换成 UTF-8 的时候,发现程序会报“illegal input sequence at position xxxx”的错误。这是由于你之前的做的假定有问题。GB2312 是国标里面一个最小也是最早的中文编码标准。其中,只涵盖了 6,763 个汉字。所以你需要转换的文件的原始的格式可能并不是 GB2312 编码。这个时候,你可以用 GB18030 做为源格式来进行转换。GB18030 是最新的国家标准,包含了 27,564 个汉字,而且向下兼容 GB2312 和 GBK。
b、另外,支持 Unicode 且 Free 的中文字库我推荐使用”文泉驿“。这好像也是目前为止,唯一的一个以支持 Unicode 为出发点的 Free 的中文字库。
-f: from 来源编码
-t: to 转换后新编码
-c: 忽略无效字符
-s: --silent ,忽略警告
-o file:可选,没有的话直接转换当前文件, 使用-o 保留源文件
再次输入:iconv -f utf8 -t gb18030 test.txt > test01.txt 就OK了。
iconv -f 原编码 -t 新编码 filename -o newfile
iconv -f utf8 -t gb18030 /home/jenkins/weixin1.xls -o /home/jenkins/weixin.xls
补充:
后面有一次转换文件的时候报了Bus error iconv -futf8 -tgb18030
后面尝试改了几个转换后的编码,都不行,最后发现是源文件和目标文件相同导致的问题。
更多推荐
所有评论(0)