Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239108
  • 博文数量: 37
  • 博客积分: 325
  • 博客等级: 一等列兵
  • 技术积分: 1199
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-09 00:04
个人简介

坚持原创,虽然有些东西很简单,但也算是一种积累。

文章分类

全部博文(37)

文章存档

2013年(28)

2012年(9)

我的朋友

分类: 系统运维

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

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