iconv

linux iconv工具使用之被误导 2013-05-23 11:27:31

分类: 系统运维

    我曾经写过一个脚本,目的是将mysql latin1编码表内容转换成utf8。原理是:用脚本识别出哪些表是latin1之后再用 into outfile 导出后,再用linux 下的工具iconv转成utf8格式。再用load data导入对应的表。脚本写完之后,执行后发现在utf8编码环境下打开显示乱码。--抛开方法不说(应该有更好的办法。其它办法好像是转换后表内容乱码。只是改变了表编码)
    转入正题如下:
     192.168.1.176-sms@wddev$/tmp/outfile/latin -->file xmloplog_outfile_latin1 
    xmloplog_outfile_latin1: ISO-8859 text, with very long lines

    使用如下命令转换:(在网上查了下,大多数文章说这类的转换-f  为ISO-8859-? 一个个去试)

    iconv  -f  ISO-8859-1   -t uft8   xmloplog_outfile_latin1     -o   xmloplog_outfile_utf8

    file 显示:
    192.168.1.176-root@wddev#/tmp/outfile/latin -->file xmloplog_outfile_utf8 
    xmloplog_outfile_utf8: UTF-8 Unicode text, with very long lines
    但内容却是乱码。后面我上网搜了很多,大多数人都用相同的办法。没有找到办法,转换这一步我只好用ultraedit 操作....

    之后有一天在另一服务器上看一个crontab 发现-l 乱码。-e显示却是正常。系统编码为:utf8 , file 对应的crontab 文件显示:
sms: ISO-8859 text
    又是这样的编码。后面我上传了下windows下的一个文件,用file看了下也是这样的ISO-8859 text。(突然想起win下默认应该是gbk)
    所以iconv 的时候-f  gbk 了一下,结果显示正常。

结论(不一定对):
    凡显示 ISO-8859 text  用iconv 转换的用-f gbk (gb2312,gb18030)  转换成你想要的编码。 用file是看不出来的。

    目前验证过的 包括: mysql latin1 , windows下文件,linux下utf8查看乱码文件。统一用:

    iconv  -f  gbk   -t uft8   sourcefile      -o   destinationfile
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值