docker mysql 中文乱码

WBOY
Lepaskan: 2023-05-13 17:08:08
asal
1520 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 中文乱码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!