加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

遇到的问题------perl脚本mysql新建表后字段名(列名)中文乱码

发布时间:2020-12-16 00:06:08 所属栏目:大数据 来源:网络整理
导读:create table IF NOT EXISTS `AllRooms`( `id` int NOT NULL ?AUTO_INCREMENT PRIMARY KEY,? ?`集团KEYID` varchar(255),? ?`公司KEYID` varchar(255),? ?`项目名称` varchar(255),? ?`网上项目名称` varchar(255),? ?`楼层` varchar(255),? ?`房号` varchar


create table IF NOT EXISTS `AllRooms`( `id` int NOT NULL ?AUTO_INCREMENT PRIMARY KEY,?
?`集团KEYID` varchar(255),?
?`公司KEYID` varchar(255),?
?`项目名称` varchar(255),?
?`网上项目名称` varchar(255),?
?`楼层` varchar(255),?
?`房号` varchar(255),?
?`面积` varchar(255),?
?`状态` varchar(255));


用该语句在perl中执行创建表。

my $data_base = "DBI:mysql:$db_name:$location:$port";
	
	
	my $dbh3=DBI -> connect($data_base,$db_user,$db_pass);
		my	 $data_str=encode("utf-8",decode("gbk",$_[0]));
		

	my $sth=$dbh3->prepare($data_str);

	
	open(FILE,">createtable.txt");  
syswrite(FILE,"$_[0]");  
close(FILE); 
print "n",$data_str,"n";
	open(FILE,">createtable1.txt");  
syswrite(FILE,"$data_str");  
close(FILE); 
	
	$sth->execute() or die "ERROR::$_[0]::$dbh3->errstr";	
	$dbh3->disconnect;
	print 'ok';

执行后发现表的列名为乱码。(在workbench中查看 和 mysql中show create table 都是显示的乱码)


这时候 检查 Linux的环境 ?mysql的环境发现都已经设为utf-8,?create语句字符串也已经转码为utf-8. ? 输出到txt中也能正常显示。 但就是列名是乱码。

?ps:检查环境方法 具体可见mysql乱码问题完美解决篇(我用的perl其他语言类推可解)

我在mysql中 直接用这语句创建表 ?可以正常显示。 说明问题出在perl与mysql的连接时。



即排除了 ?1.mysql的环境的编码

2.数据源(执行语句字符串)的编码

这两个问题后

那问题应该出在 连接上。


?这个时候 要在perl中连接数据库时设置字符集。



$dbh->do("SET character_set_client = 'utf8'");
? ? $dbh->do("SET character_set_connection = 'utf8'");


执行代码改为:

my $data_base = "DBI:mysql:$db_name:$location:$port";
	
	
	my $dbh3=DBI -> connect($data_base,$db_pass);
	$dbh3->do("SET character_set_client = 'utf8'");
   $dbh3->do("SET character_set_connection = 'utf8'");
	my	 $data_str=encode("utf-8","$data_str");  
close(FILE); 
	
	$sth->execute() or die "ERROR::$_[0]::$dbh3->errstr";	
	$dbh3->disconnect;
	print 'ok';

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读