PHP MySQL乱码终极解决方案



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 ;

7. 用PHP读写数据库 在连接数据库之后:
$connection = mysql_connect($host_name, $host_user, $host_pass);
加入两行:
mysql_query("set character set 'utf8'");//读库
mysql_query("set names 'utf8'");//写库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值