我写了一段代码,处理用户输入信息的代码,可以正常写入数据库,但是写入数据库后,中文变为问号,在insert.php中我我指定了mysql_query("set names 'utf8'");可是还是问号,我的数据库编码是默认的utf8,这是什么原因啊?高手们指点指点

解决方案 »

  1.   

    文件编码是utf8吗?
    还有。试试使用odbc看看。
      

  2.   

    html页面输出是utf8吗?文件编码是utf8吗?
      

  3.   

    给出你用户输入的页面编码, 输出(就是你看到?的)页面的编码,数据库中该字段编码 如果该中文来自php文件,给出该文件编码
      

  4.   

    文件编码是utf8,浏览器可以正常显示中文,就是进入数据库后就变成问号了
      

  5.   

    把数据库的(表,和列都要改). , php, html的编码改成gb2312
    在数据库连接文件里设置下编码
    mysqli_set_charset($dbc,'gb2312'); /*确保你开启了mysqli扩展*/
    php脚本开始加个
    header('Content-Type:text/html;charset=gb2312')
    html里
    <meta http-equiv="Content-Type" Content="text/html;charset=gb2312" >
    这样就可以了
      

  6.   

    补充下,
    如果是做中文网站的话,建议使用gb2312
    因为gb2312会比utf8占的空间少一点, 传输需要的数据量也会少点,
    像百度, 网易,都用的是gb2312编码的
      

  7.   

    mysql_query("set names 'utf8'");
    改成:mysql_query('set names utf8');
      

  8.   

    我把mysql_query('set names utf8')结果还是问号,是怎么回事啊?以前好像只要这样就可以了
      

  9.   

    编码统一才能正确输出,看一下目标数据表使用的是什么编码:
    SHOW CREATE TABLE someTableName另外,使用EditPlus保存文件时,有没有选择utf8编码,如果右下角显示的是ANSI,另存一下,另存时选择文件编码为UTF-8.
      

  10.   

    怎么看我的数据库是不是utf8编码的?我的文件编码是utf8的,我在SQL里输入SHOW CREATE TABLE winstore可是上面有个#1046 - No database selected 而不是出现是什么编码的,是什么原因啊
      

  11.   

    先选择数据库啊,然后查看建表语句。
    USE someDatabaseName
      

  12.   

    它显示的怎么是这个?建表信息,没看到是什么编码的啊
    CREATE TABLE `customer` (
     `cust_id` int(5) unsigned NOT NULL AUTO_INCREMENT,
     `cust_name` char(6) NOT NULL,
     `cust_password` char(15) NOT NULL,
     `cust_address` char(30) NOT NULL,
     `cust_city` char(10) NOT NULL,
     `cust_email` char(20) NOT NULL,
     `cust_phone` char(11) NOT NULL,
     `cust_birthDate` char(15) NOT NULL,
     PRIMARY KEY (`cust_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=latin1 
      

  13.   

    DEFAULT CHARSET=latin1看到没?
      

  14.   

    ALTER TABLE `customer` CHARACTER SET utf8;
    ALTER TABLE `customer`  CHANGE `cust_name` `cust_name` CHAR(6) CHARACTER SET utf8;
    ALTER TABLE `customer`  CHANGE `cust_password` `cust_password` CHAR(15) CHARACTER SET utf8;
    ALTER TABLE `customer`  CHANGE `cust_address` `cust_address` CHAR(30) CHARACTER SET utf8;
    ALTER TABLE `customer`  CHANGE `cust_city` `cust_city` CHAR(20) CHARACTER SET utf8;
      

  15.   

    如果只是测试数据库,还是修改一下my.cnf,设置默认字符集为utf8,然后重新建表吧,不然需要把涉及到中文数据的列全都进行转码。。
    [mysqld]
    default-character-set=utf8
    default-collation=utf8_general_ci
    character-set-server=utf8
    collation-server=utf8_general_ci
    init-connect='SET NAMES utf8'
     
    [client]
    default-character-set=utf8