转自http://www.istartupcn.com/?q=node/688
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 = gbk
mysql -uroot -p;
mysql>use cnews;
mysql> status
--------------
Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk
则perl能够正常插入中文无须其它设置。
如果不在my.cnf里设置default-character-set,例如:
mysql -uroot -p;
msyql>use cnews
mysql> status
Server characterset: latin1
Db characterset: gbk
Client characterset: latin1
Conn. 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,希望对跟我一样的新手有所帮助。
在Perl里简单的执行这个也.
Perl Mysql中文乱码
标签
脚本语言
相关文章:
相关文章:
- Perl高级正则表达式 - 2009-09-10
- Ruby on Rails Intro - 2008-12-20
- Multi-line comments in perl code - 2011-07-05
- 安装DBD:SQLite时的问题 - 2011-05-24
- Notes for running CGI scripts on Windows Apache Server - 2010-09-01
订阅:
博文评论 (Atom)
没有评论:
发表评论