mysql 编码的问题

(1)

 当使用mysql数据库时,要确定五个编码。(1)首先我们要设置数据库的编码;(2)然后确定程序中的请求和响应的编码和数据库一致;(3)连接数据库的编码和数据库一致,jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8(注意这句话一定不要写错了)(4)页面编码和数据库一致。(5)程序文件编码和数据库一致。

(2)

当以上五中都相同但还是出现插入乱码或查询乱码。你就应该考虑到mysql服务器的编码。mysql默认编码为latin1不支持中文,可以通过show variables like 'character%';查看。需要将以下几个参数的编码设为一致。本人乱码是因为character_set_server 为latin1。而其他几个编码为utf-8.在linux下可以修改my.cnf文件,默认在/etc/my.cnf,在[mysqld]后添加character-set-server = utf8

MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。

1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -uroot –p,之后两次输入root用户的密码),查看数据库的编码方式命令为:
 >show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8;
其中,character_set_client为客户端编码方式;
character_set_connection为建立连接使用的编码;
character_set_database数据库的编码;
character_set_results结果集的编码;
character_set_server数据库服务器的编码;
character_set_system
linux可以通过 修改my.conf
windows修改my.ini

在[mysqld]后面加上:
character_set_server=utf8后面的几个语句和这个相似,本处略去。

注意 :如果插入字符包含Emoji表情,则必须在my.conf中添加如下两行(只加入以下两行,其他地方不需要改,当然要保证创建数据库和表编码为utf8mb4)
collation_server = utf8mb4_general_ci
character_set_server = utf8mb4
因为Emoji表情是四个字符,而utf-8是三个字符。所以要改成utf8mb4.


也可以通过命令方式
set character_set_server=utf8 注意是utf8 不是utf-8,后面的几个语句和这个相似,本处略去。
只要保证以上6个采用的编码方式一样,就不会出现乱码问题,如下图。

另一个查看数据库编码的命令:
>show variables like ‘collation%’;
### 如何在 MySQL 5.7 中设置和修改字符编码 #### 查看当前字符编码配置 为了确保能够正确地调整字符编码,在更改之前先了解现有的字符编码是非常重要的。可以通过执行以下 SQL 命令来查看 MySQL 的默认字符集: ```sql SHOW VARIABLES LIKE '%char%'; ``` 或者使用更具体的查询语句: ```sql SHOW VARIABLES LIKE 'character%'; ``` 这些命令会返回一系列关于字符集的信息,包括但不限于 `character_set_server` 和 `collation_server` 等参数[^2]。 #### 修改全局字符编码设置 对于希望永久改变服务器级别的字符编码的情况,编辑 MySQL 配置文件(通常是 my.cnf 或者 my.ini 文件),找到 `[mysqld]` 段并加入如下几行以设定 UTF-8 编码作为默认值: ```ini [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ``` 保存更改后的配置文件,并重启 MySQL 服务使新的设置生效。这一步骤可以确保新创建的数据表以及数据库都将采用指定的字符编码标准[^1]。 #### 更新现有数据库及其对象的字符编码 如果已经存在一些含有不正确编码的数据,则还需要进一步处理已有的数据库、表格乃至字段级别上的字符集定义。针对单个数据库可运行下面这条指令将其转换为期望的目标编码形式: ```sql ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 同样地,也可以单独对某个特定的数据表应用相同的变更操作: ```sql ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 最后,当涉及到具体列的时候,应该逐一对它们实施相应的 ALTER COLUMN 变动动作,比如这样: ```sql ALTER TABLE table_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 通过上述方法可以在很大程度上改善由于字符编码不当所引发的一系列问题,从而保障存储于 MySQL 数据库内的非 ASCII 字符能被正常读取与展示[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值