mysql - 字符集character/编码格式unicode

目录

1.查看mysql对象字符集

2.创建对象时设置字符集

3.Alter修改象字符集


在使用MySQL时要注意6个需要编码的地方:系统的编码、客户端、服务端、库、表、列。

1.查看mysql对象字符集

1)查看mysql服务器支持的字符集

show character set;

select * from information_schema.character_sets;

select character_set_name, default_collate_name, description, maxlen from information_schema.character_sets;

2)查看字符集的校对规则

show collation;

show collation like 'utf8';

select * from information_schema.collations where collation_name like 'utf8%';

3)查看当前数据库的字符集

show variables like 'character%';

名词解释:

    character_set_client:客户端请求数据的字符集
    character_set_connection:客户机/服务器连接的字符集
    character_set_database:默认数据库的字符集,无论默认数据库如何改变,都是这个字符集;
    character_set_filesystem:把os上文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的

    character_set_results:结果集,返回给客户端的字符集
    character_set_server:数据库服务器的默认字符集
    character_set_system:系统字符集,这个值总是utf8,不需要设置。这个字符集用于数据库对象(如表和列)的名字,也用于存储在目录表中的函数的名字。

4)查看当前数据库的校对规则

show variables like 'collation%';

名词解释:

collation_connection 当前连接的字符集。
collation_database    当前日期的默认校对。每次用USE语句来“跳转”到另一个数据库的时候,这个变量的值就会改变。如果没有当前数据库,这个变量的值就是collation_server变量的值。
collation_server 服务器的默认校对。

排序方式的命名规则为:字符集名字_语言_后缀,其中各个典型后缀的含义如下:
1)_ci:不区分大小写的排序方式
2)_cs:区分大小写的排序方式
3)_bin:二进制排序方式,大小比较将根据字符编码,不涉及人类语言,因此_bin的排序方式不包含人类语言

 

2.创建对象时设置字符集

2.1、为列分配字符集

create table column_charset(

c1 char(10) character set utf8 not null,

c2 char(10) charset utf8 ,

c3 varchar(10) charset utf8,

c4 varchar(10)) engine=innodb;

注意:character set可以简写为char set和charset

2.2、为表分配字符集

create table table_charset( c1 varchar(10), c2 varchar(10))engine=innodb default charset=utf8;

2.3、为数据库指定字符集

创建的每个数据库都有一个默认字符集,如果没有指定,就用latin1。

create database dbking charset=utf8;

2.4、为列分配校对规则

create table column_collate(

c1 varchar(10) charset utf8 collate utf8_romanian_ci not null,

c2 varchar(10) charset utf8 collate utf8_spanish_ci)engine=innodb;

2.5、为表指定校对规则

create table table_collate( c1 varchar(10), c2 varchar(10))engine=innodb default charset utf8 collate utf8_romanian_ci;

2.6、为数据库指定校对规则

create database dbking102 default charset utf8 collate utf8_romanian_ci;

2.7、字符直接量字符集

如果没有显示指定,那么字符直接量的字符集就是数据库的默认字符集。如果要显示分配另一个字符集,需要把字符集的名字放在直接量前面,并且要在字符集前面加上下划线。

mysql> select _utf8'语言 Language 言語 язык'; 

2.8、修改和设置MySQL服务器级别字符集

在mysql 配置cnf文件中设置

[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

 

3.Alter修改象字符集

外部访问数据乱码的问题就出在这个connection连接层上,解决方法是在发送查询前执行一下下面这句:
1) SET NAMES ‘utf8’;
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
一般只有在访问之前执行这个代码就解决问题了,下面是创建数据库和数据表的,设置为我们自己的编码格式。
2)创建数据库
mysql> create database name character set utf8;
3)创建表
CREATE TABLE type (
id int(10) unsigned NOT NULL auto_increment,
flag_deleted enum(‘Y’,‘N’) character set utf8 NOT NULL default ‘N’,
flag_type int(5) NOT NULL default ‘0’,
type_name varchar(50) character set utf8 NOT NULL default ‘’,
PRIMARY KEY (id)
) DEFAULT CHARSET=utf8;
4)修改数据库成utf8的.
mysql> alter database name character set utf8;
5)修改表默认用utf8.
mysql> alter table type character set utf8;
6)修改字段用utf8
mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值