在 Docker 环境中使用 MySQL数据库创建表 时,遇到无法输入中文,甚至粘贴时中文内容还会丢失的窘境。
一、幕后“黑手”——字符编码
在发现问题时就感觉是环境有问题,经过对比不同环境下的 MySQL 数据库,发现,在本地安装的 MySQL中,并没有出现此类问题,唯独在 Docker 中的 MySQL 镜像里才会出现。这很表明问题的根源在于 Docker 环境与 MySQL 镜像之间的字符编码设置差异。
二、解锁解决之道
1. 检查当前的字符编码
在终端中运行以下命令,查看配置系统的本地化(语言环境)信息。
如果输出中没有包含 C.UTF-8
或类似的 UTF-8 编码,那么我们需要设置环境变量。
locale
或
locale -a
2. 设置环境变量
通过以下命令,将系统的字符编码设置为 UTF-8,并将其添加到系统的环境变量中:
echo "export LANG=C.utf8" >> /etc/profile && source /etc/profile
echo "export LANG=C.utf8" >> /etc/profile
:将export LANG=C.utf8
追加到/etc/profile
文件中,确保每次登录时都会加载这个环境变量。source /etc/profile
:立即加载/etc/profile
文件,使环境变量生效。
3. 修改 MySQL 配置文件
在 MySQL 的配置文件(通常是 my.cnf
或 my.ini
)中设置默认字符集。例如:
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
修改配置文件后,需要重启 MySQL 服务,这样新的连接都会默认使用 utf8
字符集。
评论 (0)