在下一台在国外的服务器,是Linux英文版的,在部分网页程序上往mysql数据库中插入,更新中文数据的时候,不管输入什么,都会变成个?问号.输入几个字符,变几个问号.环境:
Linux:Centos5.2英文版
php:5.0
mysql:5.0
网页文件编码:UTF-8
mysql字符集:UTF-8 Unicode (utf8)
链接校对:utf8_unicode_ci在下的测试结果是,在没有在mysql的查询语句前加入mysql_query("SET NAMES UTF8")的,皆会出现显示的错误.在不加mysql_query("SET NAMES UTF8")这句的前提下,是有办法可以解决显示问题的,我想,或许是mysql.cnf或者php.conf等配置文件中编码格式的设置不当,或者我的mysql字符集的设置不当.请教各位高手,如何解决这问题!?

解决方案 »

  1.   

    mysql> show create table test;
    +-------+----------------------------------------------------------------------
    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------
    ------------------+
    | Table | Create Table                  |
    +-------+----------------------------------------------------------------------
    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------
    ------------------+
    | test  | CREATE TABLE `test` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `class` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
      `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
      `age` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci+-------+----------------------------------------------------------------------
    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------
    ------------------+
    1 row in set (0.02 sec)
    检查你插入表的字段与表字符集是否一致
    `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
      

  2.   

    你可以写个函数封装一下,这样就不麻烦了。
    function query($sql,$con){
       mysql_query("set names utf8",$con);
       return mysql_query($sql,$con);
    }
      

  3.   

    没有办法,只能
     mysql_query("SET NAMES UTF8")
      

  4.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  5.   

    可以在my.cnf里面:init-connect='SET NAMES utf8'
      

  6.   

    show variables like '%char%'看看建议你还是操作数据库前发送mysql_query("SET NAMES UTF8")吧
      

  7.   

    呵呵.最后还是选择了mysql_query("SET NAMES UTF8")的封装.感谢各位的回答!