mysql编码的那点事

时间:2021-07-14 14:04:09

Mysql编码问题 

在php页面可以向mysql插入英文字符,但就是不能插入中文字符,在cmd客户端也可从插入,这是困扰我两天的问题。

在网上找了很多资料,最终确定了是字符编码这个地方出现了问题,首先要想通过php页面向mysql数据库插入中文字符,则必须要文件编码、代码的编码和mysql的编码保持一致性,我当前用的编码是utf-8,所以设置了文件的默认编码为utf-8之后,还会在每个php页面上加上 header("content-type:text/html;charset=utf-8")、mysql_query(“set names utf8”)。

接下来就是mysql编码问题了,也要做到将编码设置为utf-8,我的版本是win7的64位的mysql5.6免安装版的,在mysql.ini的[mysqld]中添加character_set_server = utf8,千万不要添加default-character-set=utf-8,因为这样会导致你的mysql不能开启,然后再通过show variables like '%char%'查看编码的设置,

Character_set_client、Character_set_connection、Character_set_database和Character_set_results全都是utf-8的,基本没问题了。

但是为了避免出现问题,我们尽量在创建数据库和表的时候就设置它的编码,create database if not exists databasename default charset utf8;和create table if not exists table tablename (col type) default charset utf8;当然我们也可以修改他的默认编码,修改数据库编码alter database databasename default charset utf8;修改表的编码alter table tablename default charset utf8,这样基本就不会出现不能插入中文字符,或者是插入中文后显示乱码了。