我用的是php+mysql,插入中文是问号。
mysql的表建立如下CREATE TABLE IF NOT EXISTS `user` (
  `ID` int(4) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `departmet` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  `phone` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `sex` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
  `acadamy` varchar(7) COLLATE utf8_unicode_ci NOT NULL,
  `garde` varchar(4) COLLATE utf8_unicode_ci NOT NULL,
  `marjor` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  `num` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;
我同时在php里
header("Content-type: text/html; charset=utf-8"); 
$link=mysql_connect("localhost","name","password") or die("can't connect to the database");
mysql_query("SET NAMES 'UTF8'"); 
mysql_query("SET CHARACTER SET UTF8");
mysql_query("SET CHARACTER_SET_RESULTS=UTF8");
mysql_select_db("C278138",$link) or die("can't connect to the table"); 
还是插入不了,插入进去是问号,select出来也是问号,请问我哪里错了?

解决方案 »

  1.   

    用phpadmin看看数据库的表编码是不是UTF8的.另外插入之前 echo 看看俺中文是不是有问题
      

  2.   

    中文绝对没问题,数据库MySQL 字符集: UTF-8 Unicode (utf8)
      

  3.   


    联系管理员看看吧.虚拟主机就是烦..或者你尝试将中文做一个编码转换 转换成gbk的,搞不好他就正常了.
      

  4.   

    看看你的数据库编码和php编码是不是一致。还有你可以用转化编码iconv
      

  5.   

    我来给一个一针见血的答案:1. 确保你拼接出来的 SQL 语句那个字符串里的中文是 UTF8 编码的。2. 如果不是 UTF8 编码,那是什么编码就用 SET NAMES 设成这个编码。3. 其它的 SET CHARACTER SET 什么的都不需要。(好像不是“一针”,hehe)BTW: 好像很多人都误会了 SET NAMES 这个语句的作用,以为它是程序告诉驱动“数据库是用什么编码存储的”,其实不是,它只是程序告诉驱动“下面我要用什么编码方式说话了”,剩下的事驱动和db服务器自会处理好。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)