我租用的虚拟主机,现在的服务器信息如下:
MY SQL服务器: 版本为5.0.22, Linux
PHP网站空间: win2k我连之前的一个4.0版本的MY SQL(基于WIN)没有问题. 后来把数据库导到现在的基于LINUX的MY SQL服务器后,在PHPMYADMIN下查询数据库中文一切正常, 但在网站页面中输出中文却是乱码. 搞了一天不知道什么原因, 试了网上很多方法也没成功. 下面是一些字符集信息, 请大家帮我看看是什么原因. 谢谢!在PHP程序中已经使用了mysql_query( "SET NAMES 'utf8'" );mysql>SHOW CREATE TABLE my_menu
====================
CREATE TABLE `my_menu` (\n `menuid` int(12) NOT NULL auto_increment,\n `pid` int(6) default NULL,\n `menu` varchar(50) collate utf8_unicode_ci default NULL,\n `coltype` varchar(30) collate utf8_unicode_ci NOT NULL default '',\n `url` varchar(200) collate utf8_unicode_ci default NULL,\n `fold` varchar(50) collate utf8_unicode_ci NOT NULL default '',\n `pub` varchar(50) collate utf8_unicode_ci default NULL,\n `ifshow` int(1) default NULL,\n `moveable` int(1) default NULL,\n `xuhao` int(4) default NULL,\n `target` varchar(10) collate utf8_unicode_ci default NULL,\n `openindex` int(1) NOT NULL default '0',\n `secure` int(1) NOT NULL default '0',\n `skin` varchar(20) collate utf8_unicode_ci NOT NULL default 'images',\n PRIMARY KEY (`menuid`)\n) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
mysql>SHOW FULL COLUMNS FROM my_menu;
=============================
Field Type Collation Null Key Default Extra Privileges Comment
menuid int(12) NULL NO PRI NULL auto_increment select,insert,update,references
pid int(6) NULL YES NULL select,insert,update,references
menu varchar(50) utf8_unicode_ci YES NULL select,insert,update,references
coltype varchar(30) utf8_unicode_ci NO select,insert,update,references
url varchar(200) utf8_unicode_ci YES NULL select,insert,update,references
fold varchar(50) utf8_unicode_ci NO select,insert,update,references
pub varchar(50) utf8_unicode_ci YES NULL select,insert,update,references
ifshow int(1) NULL YES NULL select,insert,update,references
moveable int(1) NULL YES NULL select,insert,update,references
xuhao int(4) NULL YES NULL select,insert,update,references
target varchar(10) utf8_unicode_ci YES NULL select,insert,update,references
openindex int(1) NULL NO 0 select,insert,update,references
secure int(1) NULL NO 0 select,insert,update,references
skin varchar(20) utf8_unicode_ci NO images select,insert,update,references
mysql>SHOW VARIABLES LIKE 'char%'
===============================
Variable_name Value
character_set_client latin1
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
===============================
Variable_name Value
character_set_client latin1
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
直接在MYSQL命令行工具中或者MYSQL BROWSER图形工具先确认一下你的字段中存储的是UTF8编码。
To acmain,所有的中文输出到页面都是乱码, 例如字段: `menu` varchar(50) collate utf8_unicode_ci default NULL怎么确认存储的是否UTF8编码? 我在MY SQL 的客户端查看数据库表中记录是正常的不好意思, 我是新手, 第一次用MY SQL. 还请多多指教.
character_set_client latin1
character_set_connection utf8
character_set_results latin1
这三个变量默认的值?
直接用mysql命令行工具, set name 'gbk'; 然后看看是否乱码。如果乱码基本上就是表中存储的字符串不是用UTF8存入的。
我用命令行工具试过了: set names 'gbk',页面还是输出乱码.
另外, 我用MYSQL QUERY BROWSER查看了MENU字段,column charset是utf8, 但用SELECT语句却发现表记录显示的都是乱码,而在PHPMYADMIN里用SELECT却显示是正常的, 这是怎么回事啊?