Chinaunix首页 | 论坛 | 博客
  • 博客访问: 523090
  • 博文数量: 80
  • 博客积分: 1496
  • 博客等级: 上尉
  • 技术积分: 1292
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-18 11:24
个人简介

IT码农一个~

文章分类

全部博文(80)

文章存档

2020年(3)

2019年(7)

2017年(1)

2016年(2)

2015年(2)

2014年(26)

2013年(26)

2012年(2)

2011年(1)

2010年(1)

2008年(9)

我的朋友

分类: LINUX

2013-03-14 17:12:12

今天在Linux 下使用 Iconv 命令转换一个UTF8文件时,总是转换不成功
iconv -f utf8 -t gb2312 aaa.txt > bbb.txt
提示:

iconv: illegal input sequence at position 15

后来使用 man iconv 查看,还是没发现异常,因为命令格式都是正确的。后来找了许多资料才知道原因,如下:

a. 在做编码转换的时候,如果你的源格式设定为 GB2312 的话,而且在转换成 UTF-8 的时候,发现程序会报“illegal input sequence at position xxxx”的错误。这是由于你之前的做的假定有问题。 是国标里面一个最小也是最早的中文编码标准。其中,只涵盖了 6,763 个汉字。所以你需要转换的文件的原始的格式可能并不是 GB2312 编码。这个时候,你可以用 GB18030 做为源格式来进行转换。 是最新的国家标准,包含了 27,564 个汉字,而且向下兼容 GB2312 和 GBK。

b.另外,支持 Unicode 且 Free 的中文字库我推荐使用”“。这好像也是目前为止,唯一的一个以支持 Unicode 为出发点的 Free 的中文字库。

后来我直接输入:iconv -f utf8 -t gb18030 aaa.txt > bbb.txt   就OK了。


还有一个enconv的程序可以用来猜测编码


vim看文本的话就简单多了

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,iso-8859-1,gbk
set encoding=utf-8



参考:
http://blog.sina.com.cn/s/blog_68b1a51b0101333f.html
http://zhaizhenxing8170.blog.163.com/blog/static/74425020084562258565/
http://blog.csdn.net/echoisland/article/details/6660619



阅读(14855) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~