数据库里存储的数据的编码似乎和表的编码类型无关。
如果你的网页编码类型为utf-8,而且是用mysqldump导出的话,在create table 后面会有一句DEFAULT CHARSET=latin1;
把这句话改成DEFAULT CHARSET=utf8;一般在数据库中就不会乱码了。
在mysql数据库中导出数据库文件时,如:
CREATE TABLE `book` (
`idx` int(11) NOT NULL auto_increment,
`b_title` varchar(30) NOT NULL default '',
`b_name` varchar(20) NOT NULL default '',
`b_company` varchar(30) default NULL,
`b_tel` varchar(15) NOT NULL default '',
`b_email` varchar(20) default NULL,
`b_content` text NOT NULL,
`b_return` text,
`unitname` varchar(40) NOT NULL default '',
`b_time` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`idx`)
) TYPE=MyISAM AUTO_INCREMENT=8 ;
我们在这段代码后面,加上:
CREATE TABLE `book` (
`idx` int(11) NOT NULL auto_increment,
`b_title` varchar(30) NOT NULL default '',
`b_name` varchar(20) NOT NULL default '',
`b_company` varchar(30) default NULL,
`b_tel` varchar(15) NOT NULL default '',
`b_email` varchar(20) default NULL,
`b_content` text NOT NULL,
`b_return` text,
`unitname` varchar(40) NOT NULL default '',
`b_time` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`idx`)
) TYPE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
然后,在另外的mysql中使用SQL语句,去执行上面的代码,最后,在插入数据。这样一般可以解决中文乱码问题。
另一种:在数据库中是中文,但编写代码后在网页中显示乱码:
為著解決這個問題的修改方式是這樣的:
$this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);
//加上下面這行$this->query("SET NAMES 'utf8'");
最后修改于 2007-11-15 17:33
阅读(?)评论(0)