千家信息网

Mysql中如何设置字符集

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇文章将为大家详细讲解有关Mysql中如何设置字符集,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。#########################
千家信息网最后更新 2024年12月12日Mysql中如何设置字符集

这篇文章将为大家详细讲解有关Mysql中如何设置字符集,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。


####################################
DROP TABLE test_var;
CREATE TABLE test_var(NAME VARCHAR(5)) CHARACTER SET utf8;
INSERT INTO test_var(NAME) VALUES('一路上有你'); --successful
INSERT INTO test_var(NAME) VALUES('一路上有你们'); --Data too LONG FOR COLUMN 'name' AT ROW 1
INSERT INTO test_var(NAME) VALUES(',,,,,');-- successful
INSERT INTO test_var(NAME) VALUES(',,,,,,'); --6个符号失败
SELECT * FROM test_var;
######################################
当然所有的前提是字符集设置正确了,才能正确insert。
在创建表的时候,因为没有指定字符集utf8,而采用了数据库默认的字符集latin1,我客户端的字符集是utf8,
在进行client->connection->server的字符集转换,即utf8->latin1->latin1转换,在第一个转换时便有了乱码,那么在insert的时候报了乱码错误。
#######################################
由于后台前端都是采用了utf8字符集,所以建议数据库也采用utf8字符集。
为此我们需要修改数据库默认的字符集。
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
修改MySQL字符集
1、修改服务器级别字符集


a.临时修改
mysql>SET GLOBAL character_set_server=utf8;


b.永久修改
打开/etc/mysql/my.cnf,在[mysqld]后添加character-set-server=utf8


2、修改数据库级
a. 临时更改
mysql>SET GLOBAL character_set_database=utf8;


b. 永久更改
改了服务器级就可以了


3、修改表级
mysql>ALTER TABLE table_name DEFAULT CHARSET utf8; 更改了后永久生效


4、修改列级修改示例
mysql>ALTER TABLE `products` CHANGE `products_model` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; 更改了后永久生效


5、更改连接字符集
a. 临时更改:mysql> SET GLOBAL character_set_client;


b. 永久更改:打开/etc/mysql/my.cnf,在[client]后添加default-character-set=utf8


Notice:3.1和3.5需要重启mysql: service mysql restart
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
字符集的概念
基本概念


@字符(Character)是指人类语言中最小的表义符号。例如'A'、'B'等;
@给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding)。例如,我们给字符'A'赋予数值0,给字符'B'赋予数值1,则0就是字符'A'的编码;
@给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set)。例如,给定字符列表为{'A','B'}时,{'A'=>0, 'B'=>1}就是一个字符集;
@字符序(Collation)是指在同一字符集内字符之间的比较规则;
@确定字符序后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系;
@每个字符序唯一对应一种字符集,但一个字符集可以对应多种字符序,其中有一个是默认字符序(Default Collation);
@MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头;以_ci(表示大小写不敏感)、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾。例如:在字符序"utf8_general_ci"下,字符"a"和"A"是等价的;

关于Mysql中如何设置字符集就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0