| perl mysql中文亂碼 摘自 中國Perl協(xié)會(huì) 用戶推廣組 cnchun 2005-06-29 16:57 http://perlchina./cgi-bin/ccb/index.cgi 搞了一天總算搞好了。 perl5.8+mysql4.1,用perl DBI mysql往數(shù)據(jù)庫插入數(shù)據(jù),總是亂碼,而用phpmyadmin能插入中文;而用perl插入的中文在phpmyadmin里面也是亂碼。數(shù)據(jù)庫的創(chuàng)建,我用了。 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里面設(shè)置了 [client] default-character-set = gbk [mysqld] default-character-set = gbk mysql -uroot -p; mysql>use cnews; mysql> status -------------- Server characterset: gbk Db characterset: gbk Client characterset: gbk Conn. characterset: gbk 則perl能夠正常插入中文無須其它設(shè)置。 如果不在my.cnf里設(shè)置default-character-set,例如: mysql -uroot -p; msyql>use cnews mysql> status Server characterset: latin1 Db characterset: gbk Client characterset: latin1 Conn. characterset: latin1 在調(diào)用perl 的時(shí)候,需要下面設(shè)置: $db->do("SET character_set_client = ‘gbk‘"); $db->do("SET character_set_connection = ‘gbk‘"); 如果需要顯示結(jié)果,加上 $db->do("SET character_set_results= ‘gbk‘ "); 其實(shí)可以把database 設(shè)置為gbk,然后用character_set_*來設(shè)置相關(guān)編碼,mysql其實(shí)還是很靈活的。perl運(yùn)行跟linux的locale沒有關(guān)系,對于數(shù)據(jù)庫操作。 剛學(xué)perl,希望對跟我一樣的新手有所幫助 |
|
|