PHP MySQL乱码终极解决方案

来源:互联网 发布:nginx安装配置 编辑:程序博客网 时间:2024/04/24 10:10


1. html页面有 meta 设置为 utf-8  页面存为utf-8编码
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

2. php页面有 header 设置为utf-8, 页面存为utf-8编码
   <?php
         header("Content-Type:text/html; charset=utf-8");
   ?>

3. 数据库操作之前 mysql_query("set names utf8");

4. mysql中 show variables like 'character_set%';  client,connection,database 均为 utf-8
    配置my.ini文件
    在[client]节点下添加 
       default-character-set=utf8
    在[mysqld]节点下添加
       character-set-server=utf8
       collation-server=utf8_general_ci  
    然后重启mysql

5. 已经创建好的数据库及库中的表要如何更改为utf8
   用alter语句(修改数据库的字符集不会改变原有数据库表的字符集)

修改数据库编码为utf-8
ALTER DATABASE `数据库名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

修改数据库表编码为utf-8
ALTER TABLE `数据库表名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

修改库表字段的编码为utf-8
ALTER TABLE `emp` CHANGE `name` `name` VARCHAR( 64 ) CHARACTER SET utf8 COLLATE utf8_general_ci;
是将MYSQL数据库emp表中 name的字段编码改为utf8

6. phpmyadmin 登录时中文utf-8

以上情况下. 插入mysql中的中文在phpmyadmin中显示正常, 自己输出中文同样正常.  但是mysql命令行下select数据中文为乱码.
cmd无法输出utf-8字符, mysql下设置 set character_set_results = gb2312/gbk;(需要重启mysql服务以及cmd)

对于新创建的数据库 设置默认字符集为utf-8
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

对于新创建的数据库表 设置默认字符集为utf-8
  CREATE TABLE `test` (
  `id` int(10) NOT NULL auto_increment,
  `uid` varchar(10) NOT NULL default '0',
  `regdate` date NOT NULL,
  `remark` text,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf-8 AUTO_INCREMENT=5 ;

0 0
原创粉丝点击