我租了个空间,在他的管理页面上建了一个mysql的数据库,建库时只让设置了用户的密码和库名,其它都没让设,建好后
在库里建了1个表,建库脚本如下,用phpMyAdmin插入中文是正常的,但用页面读出来就是乱码,请问这个需要改什么呢?
我从phpMyAdmin的默认页面看到的是:
------------------------------------
服务器版本: 4.1.20
Protocol version: 10
服务器: Localhost via UNIX socket
MySQL 字符集: cp1252 West European (latin1) //会不会是这里的问题?(这个是不是空间里提供的MySql的默认字符集?我没找到修改的地方)
MySQL 连接校对:  整理   utf8_general_ci    //这里设为这个有没有问题,因为在本地Collection我都是不选的(用mysql-front客户端)
创建一个新的数据库: 无权限 
-------------------------------------
下面是建表的脚本:
CREATE TABLE `userinfo` (
  `id` int(11) NOT NULL auto_increment,
  `UserName` varchar(100) NOT NULL,
  `Psw` varchar(30) NOT NULL,
  `RealName` varchar(30) NOT NULL,
  `CreatTime` date default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';
--------------------------------------
建表的时候指定了charset为utf8
我是第1次在租用的空间上搞mysql,所以也不知道咋回事,原来在本地或自己部署的环境时,只要建库时用utf-8,建表时默认就是utf-8,页面上读取时再用utf-8,中文就没有问题
谢谢!

解决方案 »

  1.   

    用页面执行查询之前,先执行一下以下语句:
    set names utf8;
      

  2.   

    在建库的时候就要制定其库是utf-8的,否则mysql数据库在你建的时候就会采用默认的"latin1",形如你的:"cp1252 West European (latin1)"
    下面我给出你在建库脚本必须要加的:
    CREATE DATABASE `xxx` 
        CHARACTER SET 'utf8' 
        COLLATE 'utf8_bin';
    否则你的表,形如你的:CREATE TABLE `userinfo` ( 
      `id` int(11) NOT NULL auto_increment, 
      `UserName` varchar(100) NOT NULL, 
      `Psw` varchar(30) NOT NULL, 
      `RealName` varchar(30) NOT NULL, 
      `CreatTime` date default NULL, 
      PRIMARY KEY  (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表'; 
     虽然表已制定utf-8,但你的库存取数据却是你库默认的"latin1",而不是utf-8.