十二12 发表于 2018-9-1 07:38:37

perl 入mysql库 出现字符集乱码

  环境:
  linux                                           en_US.UTF-8
  perl, v5.8.8
  mysql-5.1.46                        表字符集:gbk_chinese_cli
  我的perl脚本是分析一个log日志.然后插入mysql中入库.但是结果很让人不爽.乱码.
  折腾了很久.弄好了.解决方式如下.
  在perl连接mysql数据库的时候,设置
  


[*]my $dbh = DBI->connect("DBI:mysql:database=statcenterdb;host=127.0.0.1", "user", 'passwd');
[*]$dbh->do("SET NAMES 'gbk'");
  

  是perl在向mysql插数据的时候用gbk的字符集工作.
  然后还需要设置perl分析日志后得到解决的字符集
  


[*]$_=encode("gbk",decode("utf-8",$_));
  

  perl5.6以后,内部处理的时候都是用utf-8字符集.所以perl读入文件处理没有问题.
  但是输出还是utf-8的.可是我需要GBK的才能入库.
  所以这里要转码.
  在分析日志的while循环中,每读一行,都进行一次转码.然后在行程sql语句,最后入库.
  这样就没有乱码了.
  处理思路记录.以备以后查看.


页: [1]
查看完整版本: perl 入mysql库 出现字符集乱码