Rumah > Operasi dan penyelenggaraan > Docker > docker mysql kod kacau Cina

docker mysql kod kacau Cina

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-05-13 17:08:08
asal
1707 orang telah melayarinya

在使用Docker容器部署MySQL数据库时,有时会出现中文乱码的情况。这是因为MySQL默认字符集为Latin1,而中文字符需要使用UTF-8编码。本文将介绍如何解决docker mysql中文乱码问题。

一、查看当前MySQL字符集

首先,我们需要查看当前MySQL的字符集。可以通过登录到MySQL后使用以下命令:

mysql> show variables like '%char%';
Salin selepas log masuk

其中,字符集相关的变量有:

  • character_set_client:客户端字符集,也就是连接MySQL的客户端所使用的字符集;
  • character_set_connection:连接字符集,也就是服务器与客户端之间的字符集;
  • character_set_database:数据库字符集,新创建的数据库会按此字符集创建;
  • character_set_results:结果字符集,SELECT查询返回的结果所使用的字符集;
  • character_set_server:服务器字符集,MySQL服务器本身所使用的字符集。

二、修改MySQL字符集为UTF-8

查看到当前MySQL字符集为Latin1后,我们需要修改为UTF-8。可以通过以下两种方式实现:

  1. 修改MySQL配置文件

在MySQL配置文件中(通常是/etc/my.cnf或/etc/mysql/my.cnf),添加以下两行内容:

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
Salin selepas log masuk

其中,[client]用于设置客户端字符集为UTF-8,[mysqld]用于设置服务器字符集为UTF-8。修改完成后重启MySQL服务:

sudo service mysql restart
Salin selepas log masuk
  1. 连接MySQL后修改字符集

如果无法修改MySQL配置文件,可以在连接MySQL后手动修改字符集。可以通过以下命令连接到MySQL:

mysql --default-character-set=utf8 -u用户名 -p密码 数据库名
Salin selepas log masuk

连接成功后,依次执行以下命令修改字符集:

SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;
Salin selepas log masuk

修改完成后,退出MySQL,再次登录即可生效。

三、在Docker容器中使用UTF-8字符集

由于Docker容器中的MySQL是基于镜像运行的,因此我们需要在镜像中设置UTF-8字符集。可以通过以下Dockerfile来构建MySQL镜像:

FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_DATABASE=test
ENV MYSQL_CHARSET=utf8
ENV MYSQL_COLLATION=utf8_general_ci
COPY ./init.sql /docker-entrypoint-initdb.d/
Salin selepas log masuk

其中,ENV命令用于设置环境变量,MYSQL_CHARSET用于设置MySQL字符集为UTF-8,MYSQL_COLLATION用于设置排序规则为utf8_general_ci。这里还通过COPY命令将初始化脚本init.sql复制到镜像中,用于在启动容器时自动执行。

四、总结

通过以上三个步骤,我们可以在Docker容器中使用MySQL,并且设置字符集为UTF-8,避免中文乱码的问题。当然,如果需要处理多语言字符集,还需根据具体情况进行调整。希望该文章能对大家有所帮助。

Atas ialah kandungan terperinci docker mysql kod kacau Cina. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan