mysql 数据库,表,字段的字符编码

MySQL字符集管理
本文介绍如何在MySQL中管理和调整字符集设置,包括数据库、表及字段级别的字符集配置方法。

首先进入数据库我们可以用status查看字符编码

MySQL> status

Connection: Localhost via UNIX socket 
Server characterset: utf8 
Db characterset: utf8 
Client characterset: utf8 
Conn. characterset: utf8

还可以使用指令 
show variables like '%char%'


创建数据库时指定编码CREATE DATABASE数据库名DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

更改数据库编码 
alter database 数据库名 CHARACTER SET utf8 COLLATE utf8_general_ci


查看表的编码show create table 表名 \G

创建表时指定编码drop table if exists 表名; 
create table 表名( 
id int(10) auto_increment, 
user_name varchar(60) CHARACTER SET GBK COLLATE gbk_chinese_ci, 
email varchar(60), 
PRIMARY key(id) 
)CHARACTER SET utf8 COLLATE utf8_general_ci;

修改表编码

alter table 表名 character set utf8 COLLATE utf8_general_ci


修改字段编码

alter table 表名change 字段名 字段名 类型 character set utf18 not null

ALTER TABLE tbtest MODIFY email VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci


修改全部字段alter table 表名 convert to character set utf8


CREATE DATABASE `数据库名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
 
  • 1
  • 1
  1. CREATE DATABASE 
    数据库名:创建数据库tpcms。在命令行里创建的时候,`要用键盘Esc下的那个,而不是单引号,否则出错;
  2. DEFAULT CHARACTER SET utf8:数据库字符集。设置数据库的默认编码为utf8,这里utf8中间不要”-“;
  3. COLLATE utf8_general_ci: 数据库校对规则。该三部分分别为数据库字符集、通用、区分大小写。


set character_set_server = utf8; – 服务器的默认字符集。使用这个语句可以修改成功,但重启服务后会失效。根本的办法是修改配置mysql文件MY.INI

mac下my.cnf

[mysql] 
default-character-set=utf8

[client] 
default-character-set=utf8

[mysqld] 
character-set-server=utf8 
collation-server=utf8_general_ci

  • [client]代表客户端默认设置内容
  • [mysql]代表我们使用mysql命令登录mysql数据库时的默认设置
  • [mysqld]代表数据库自身的默认设置
<think>好的,用户现在问的是如何查看MySQL数据库字符编码。我需要先回顾之前的对话,用户之前问过varchar(2000)的汉字长度问题,涉及到了字符编码的影响。现在他想知道如何查看MySQL字符编码设置,可能是因为他在实际使用中遇到了编码问题,或者想确认自己的数据库配置是否正确。 首先,我需要确定用户的使用场景。用户可能是开发人员或者数据库管理员,他们需要确认数据库字段字符编码,以确保数据存储正确,避免乱码问题。用户的真实需求可能是要检查当前MySQL服务器的编码设置,或者某个特定数据库编码,进而进行相应的调整。 接下来,我需要考虑用户可能不了解的不同查看方法。例如,用户可能知道通过SQL语句查询,但可能不知道具体的系统变量或信息模式。或者用户可能需要分层次的查看方式,从服务器级别到数据库字段级别逐步深入。 然后,我需要确保回答的结构清晰,分步骤说明不同的方法。比如使用SHOW VARIABLES命令查看全局设置,使用information_schema查询具体数据库编码,以及通过status命令查看连接相关的编码。同时,需要注意不同版本的MySQL可能有细微差别,比如8.0版本后某些默认值的改变,但用户可能使用的是较旧的版本,所以需要涵盖通用的方法。 另外,用户可能还需要了解如何修改字符编码,但当前问题只是查看,所以是否需要简要提及修改方法作为扩展?根据用户之前的提问,可能暂时不需要,但可以给出提示,如果有需要可以进一步说明。 还要注意避免使用过于专业的术语,用简单的中文解释每个步骤的作用,比如解释character_set_server和collation_server的含义,以及连接相关的变量如character_set_client和character_set_connection的重要性,特别是当应用程序和数据库交互时这些设置的影响。 最后,需要总结重点,提醒用户检查多个层次的编码设置,并注意客户端连接的编码是否一致,以预防乱码问题。可能用户在实际操作中遇到了乱码,想通过检查编码设置来排查问题,因此强调一致性是关键。</think>查看 MySQL 数据库字符编码可通过以下方法实现,需区分**服务器全局设置**、**数据库级设置**和**/字段级设置**: --- ### 一、查看服务器全局字符编码 执行以下 SQL 命令查看全局编码配置: ```sql SHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation_%'; ``` 关键参数说明: - `character_set_server`:服务器默认字符集 - `character_set_database`:新建数据库的默认字符集 - `character_set_client`:客户端请求的字符集 - `character_set_connection`:连接层字符集 - `collation_server`:服务器默认排序规则 --- ### 二、查看具体数据库字符编码 ```sql SELECT SCHEMA_NAME AS '数据库名', DEFAULT_CHARACTER_SET_NAME AS '字符集', DEFAULT_COLLATION_NAME AS '排序规则' FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '你的数据库名'; ``` --- ### 三、查看/字段字符编码 1. **查看编码**: ```sql SHOW CREATE TABLE 名; ``` 输出结果中会显示 `DEFAULT CHARSET=...`。 2. **查看字段编码**: ```sql SELECT COLUMN_NAME AS '字段名', CHARACTER_SET_NAME AS '字符集', COLLATION_NAME AS '排序规则' FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '你的数据库名' AND TABLE_NAME = '名'; ``` --- ### 四、查看当前连接的编码 ```sql STATUS; ``` 输出结果中的 `Connection` 部分会显示客户端和服务器的字符集设置。 --- ### 五、配置文件位置(扩展) MySQL 的默认编码通常在配置文件中设置: - Linux:`/etc/my.cnf` 或 `/etc/mysql/my.cnf` - Windows:`my.ini` 配置示例: ```ini [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci ``` --- ### 总结 1. 优先通过 `SHOW VARIABLES` 检查全局编码设置 2. 使用 `information_schema` 查看具体数据库//字段编码 3. 若发现编码不一致,需调整配置文件或重建数据库对象 4. **特别注意**:客户端连接编码(如 JDBC、Python 驱动)需与数据库编码一致,否则会导致乱码!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值