perl mysql 乱码_perl 解决mysql utf8中文乱码 问题

mysql utf8 中文问题:

zabbix:/root/sbin# cat a1.pl

use DBI;

my $dbUser='DEVOPS';

my $user="root";

my $passwd="kjk123123";

my $dbh = DBI->connect("dbi:mysql:database=DEVOPS;host=192.168.11.185;port=3306",$user,$passwd) or die "can't connect to database ". DBI-errstr;

##防止utf-8中文乱码

@arr2=();

#$dbh->do("SET NAMES utf8");

my $hostSql = qq{select IP,INFO,ENV from machine_info where env='esx-192.168.4.41'};

my ($a1, $a2, $a3,$a4,$a5,$a6,$a7,$a8,$a9);

my $selStmt = $dbh->prepare($hostSql);

$selStmt->execute();

$selStmt->bind_columns(undef, \$a1, \$a2, \$a3);

print "$a1,$a2,$a3\n";

print "11111111111111111\n";

while( $selStmt->fetch() )

{ push (@arr2, "$a1 $a2 $a3\n" );

};

print @arr2;

此时乱码

zabbix:/root/sbin# perl a1.pl

,,

11111111111111111

192.168.11.134 BI????????? esx-19.16.4.41

开启utf8:

$dbh->do("SET NAMES utf8");

zabbix:/root/sbin# perl a1.pl

或者:

zabbix:/root/sbin# cat a1.pl

use DBI;

use Encode;

my $dbUser='DEVOPS';

my $user="root";

my $passwd="kjk123123";

my $dbh = DBI->connect("dbi:mysql:database=DEVOPS;host=192.168.11.185;port=3306",$user,$passwd,{mysql_enable_utf8 => 1}) or die "can't connect to database ". DBI-errstr;

##防止utf-8中文乱码

@arr2=();

#$dbh->do("SET NAMES utf8");

my $hostSql = qq{select IP,INFO,ENV from machine_info where env='esx-192.168.4.41'};

my ($a1, $a2, $a3,$a4,$a5,$a6,$a7,$a8,$a9);

my $selStmt = $dbh->prepare($hostSql);

$selStmt->execute();

$selStmt->bind_columns(undef, \$a1, \$a2, \$a3);

print "$a1,$a2,$a3\n";

print "11111111111111111\n";

while( $selStmt->fetch() )

{$a2=encode_utf8($a2); push (@arr2, "$a1 $a2 $a3\n" );

};

print @arr2;

zabbix:/root/sbin# perl a1.pl

,,

11111111111111111

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值