perl mysql中文乱码

来源:百度文库 编辑:神马文学网 时间:2024/04/28 19:55:49
perl mysql中文乱码 摘自 中国Perl协会 用户推广组 cnchun 2005-06-29 16:57http://perlchina.sun126.com/cgi-bin/ccb/index.cgi 搞了一天总算搞好了。perl5.8+mysql4.1,用perl DBI mysql往数据库插入数据,总是乱码,而用phpmyadmin能插入中文;而用perl插入的中文在phpmyadmin里面也是乱码。数据库的创建,我用了。create database cnews default character set gbk;CREATE TABLE `news` (`id` int(10) unsigned NOT NULL auto_increment,`title` varchar(50) default NULL,`context` text,`date` date default NULL,`site` varchar(20) default NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=gbk如果在my.cnf里面设置了[client]default-character-set = gbk[mysqld]default-character-set = gbkmysql -uroot -p;mysql>use cnews;mysql> status--------------Server characterset: gbkDb characterset: gbkClient characterset: gbkConn. characterset: gbk则perl能够正常插入中文无须其它设置。如果不在my.cnf里设置default-character-set,例如:mysql -uroot -p;msyql>use cnewsmysql> statusServer characterset: latin1Db characterset: gbkClient characterset: latin1Conn. characterset: latin1在调用perl 的时候,需要下面设置:$db->do("SET character_set_client = ‘gbk‘");$db->do("SET character_set_connection = ‘gbk‘");如果需要显示结果,加上$db->do("SET character_set_results= ‘gbk‘ ");其实可以把database 设置为gbk,然后用character_set_*来设置相关编码,mysql其实还是很灵活的。perl运行跟linux的locale没有关系,对于数据库操作。刚学perl,希望对跟我一样的新手有所帮助