微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

perl 入mysql库 出现字符集乱码

环境:

linux                                           en_US.UTF-8

 perl,v5.8.8

MysqL-5.1.46                          表字符集:gbk_chinese_cli

 

我的perl脚本是分析一个log日志.然后插入MysqL中入库.但是结果很让人不爽.乱码.

折腾了很久.弄好了.解决方式如下.

 

在perl连接MysqL数据库的时候,设置

 
 
  1. my $dbh = DBI->connect("DBI:MysqL:database=statcenterdb;host=127.0.0.1""user"'passwd');  
  2. $dbh->do("SET NAMES 'gbk'"); 

 是perl在向MysqL插数据的时候用gbk的字符集工作.

 

然后还需要设置perl分析日志后得到解决的字符集

 
 
  1. $_=encode("gbk",decode("utf-8",$_));  

 perl5.6以后,内部处理的时候都是用utf-8字符集.所以perl读入文件处理没有问题.

但是输出还是utf-8的.可是我需要GBK的才能入库.

所以这里要转码.

在分析日志的while循环中,每读一行,都进行一次转码.然后在行程sql语句,最后入库.

这样就没有乱码了.

 

处理思路记录.以备以后查看.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐