处理 mysql 编码问题
我们经常会遇到一些向MySQL数据库中插入中文,但是select出来的时候,却是乱码。
一 、查看库、表字符集命令
1. 查看数据库支持的所有字符集
Show character set (show char set)
2. 查看当前状态,里面当然包括字符集的设置
Status ( /s )
3. 查看系统字符集设置,包括所有的字符集设置
Show variables like ‘%char%’;
4. 查看数据表中字符集设置
Show full columns from tablename ;
也可以查看表结构
Show create table tablename\G;
5. 查看数据库编码(数据库结构)
Show create database dbname;// 创建数据库指定的字符集
二、 创建库表列时要指定字符集(要统一)
1 、 服务器级
在安装MySQL时可以设置服务器的默认编码格式,也可对my.ini做修改,修改[mysqld]里面的character_set_server=utf8,则可设置character_set_server的值。
2. 数据库级
Create database dbname default character set utf8;
注意 ,如果不指定默认的字符集,则系统会根据character_set_database的值进行设置
3. 表级
Create table dbname.tbname(id varchar(20) not null, name vharchar(20))engine=innoDB default
注 :定义表的默认字符集为utf8,即使character_set_database为gbk,但是表的列都为utf8。如果没有定义表的默认字符集,则他会按照character_set_database的值来设置
4. 列级
Create table db1.tb2(id varchar(20) not null, name varchar(20) character set utf8);
注:如查没有指定列字符集、就使用表字符集、如查指定了就使用指定的。
图中: show create table db1.tb2// 是查看表结构
三、修改字符集
1. 修改 character_set_connection 、 character_set_client 、 character_set_results 三值
对于一个连接来说、可以用
Set names utf8 来使用上面三个值改成 utf8;
Set name ‘charset_name’; 相当于
Set character_set_client = charset_name;
SET character_set_results = charset_name;
SET character_set_connection = charset_name;
2. 修改 character_set_database 字段 ( 也就是改数据库字符集 )
Alter database db_name default character set charset_name;
3. 修改 character_set_server 字段
最简单的方法是直接改my.ini配置文件里面[mysqld]的字段,增加character-set-server=gbk,然后重启mysqld,则可改为你想要的字符集。
4. 修改表的字符集
Alter table tbname default character set charsetname;
Alter table tb1 default character set utf8
5. 修改列的字符集
Alter table tbname modify age varchar(30) character set utf8;
总结:
1、 建库、建表、建字段 设置统一编码。
2、 PHP 作为 mysqle 服务器客户端、连接编码 set names utf8/gbk;
3、 设置 php 返回给浏览器数据的编码。( Content-Type,header(), )
header("Content-type:text/html;charset=utf-8");
4、 Php 文件本身保存的编码(文件编码、通过文本编辑器设置)
5、 安装 mysql 时设置好编码。(装好后可修改 my.ini )
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com