MySql统一编码

本文介绍如何在MySQL中解决中文乱码问题,通过设置字符集为gb2312或gbk来确保数据库、表和字段的正确显示。同时提供了一系列SQL命令用以查看和调整MySQL的字符集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要是解决中文乱码的问题,下面的命令是统一成gb2312的··要用gbk的话将gb2312换成gbk就行了 。

 


进入命令行模式,

如果MySQL数据库已经安装好,可以使用下列SQL命令查看MySQL当前的字符集设置: 
mysql> SHOW VARIABLES LIKE 'character_set_%'; 
+--------------------------+----------------------------+ 
| Variable_name | Value | 
+--------------------------+----------------------------+ 
| character_set_client | latin1 | 
| character_set_connection | latin1 | 
| character_set_database | latin1 | 
| character_set_results | latin1 | 
| character_set_server | latin1 | 
| character_set_system | utf8 | 
| character_sets_dir | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 
7 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collation_%'; 
+----------------------+-------------------+ 
| Variable_name | Value | 
+----------------------+-------------------+ 
| collation_connection | latin1_swedish_ci | 
| collation_database | latin1_swedish_ci | 
| collation_server | latin1_swedish_ci | 
+----------------------+-------------------+ 
3 rows in set (0.00 sec)


依次执行:

set character_set_client =gb2312;

set character_set_connection =gb2312;

set   character_set_database =gb2312;

set character_set_results =gb2312;

set character_set_server =gb2312;

set character_set_system =gb2312; --此处utf-8也可以

然后执行:

SET collation_server = gb2312_chinese_ci


SET collation_database = gb2312_chinese_ci

SET collation_connection =gb2312_chinese_ci

 

 

 

 

-----------------------------------以下是查看和修改MSQL数据库、表、字段编码的命令---------------------

mysql在创建数据库时默认指定了database,table,column的字符集;

当现有database支持的字符集不符合条件时,可以进行修改,需要将database,table,column的字符集均进行修改。在允许的情况下重新建database比较简单,

重新建立database:
1。查看数据库支持的字符集
mysql>SHOW CHARACTER SET
2.创建数据库
create database db_name DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
或create database db_name DEFAULT CHARACTER SET gbk ;
3.创建table,则table的缺省字符集同database

修改已有的database和table
1。查看数据库支持的字符集:
    mysql>show create database lian;
或 mysql>show create database lian/G;
2. 修改数据库的字符集:
   mysql>alter DATABASE lian DEFAULT CHARACTER SET gbk;
注:在修改后的database中建立table,则新的table使用同数据库一致的字符集
3. 查看table的字符集,注意column的字符集
   mysql>show create table user_info; 
4.修改table的字符集
   mysql>alter TABLE user_info DEFAULT CHARACTER SET gbk;
5.修改column的字符集
   mysql>ALTER TABLE user_info MODIFY id varchar(50) character set gbk NOT NULL;

### 设置 MySQL 统一的中文字符编码 为了在 MySQL 中实现统一的中文字符编码配置,需要从以下几个方面入手:服务器级、数据库级、表级、列级以及客户端连接。 #### 1. 修改 MySQL 配置文件 编辑 MySQL 的配置文件 `my.cnf` 或 `my.ini`(具体取决于操作系统),添加或修改以下参数: ```ini [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 ``` 以上配置确保了服务器端默认使用的字符集为 `utf8mb4`,并支持完整的 Unicode 编码[^1]。完成修改后,重启 MySQL 服务以使更改生效: ```bash net stop mysql net start mysql ``` #### 2. 数据库级别的字符集设置 当创建新数据库时,可以通过指定字符集和校对规则来确保一致性。例如: ```sql CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 如果已有数据库,则可通过以下语句修改其字符集: ```sql ALTER DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 这一步骤保证了整个数据库层面使用 UTF-8 编码[^3]。 #### 3. 表和列级别的字符集调整 对于已存在的表,可以逐一将其字符集更改为 `utf8mb4` 并重新定义字段的字符集属性。例如: ```sql ALTER TABLE my_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 针对特定列也可以单独修改: ```sql ALTER TABLE my_table MODIFY column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 这些操作能够逐层覆盖到具体的存储单元,从而彻底消除潜在的编码冲突问题。 #### 4. 客户端连接中的字符集同步 即使服务器端已经设置了全局字符集,在实际应用开发过程中仍需注意客户端程序与数据库之间的交互是否一致。通常情况下,可以在建立连接前发送一条 SQL 命令显式声明所期望的通信协议: ```sql SET NAMES utf8mb4; ``` 此指令的作用是告知 MySQL 将当前会话内的所有字符串传输都按照 UTF-8 进行编解码处理[^2]。 另外需要注意的是,部分编程语言框架可能还提供了额外的方式用于初始化此类环境变量;比如 PHP 的 PDO 扩展允许直接通过 DSN 参数传递所需的 charset 属性值。 --- ### 总结 综上所述,要全面解决 MySQL 中文字符乱码现象,不仅要在安装部署阶段精心规划好各级别的默认选项,而且也要密切监控运行期间可能出现的各种动态变化情况。只有做到全方位无缝衔接才能真正意义上达成目标——即无论何时何地都能稳定可靠地保存显示任意复杂程度汉字信息的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值