解决docker容器中文字符乱码问题

这篇博客介绍了如何在Docker容器中解决中文乱码问题。通过查看和修改容器的系统字符集,如修改/etc/bashrc文件,设置LANG、LANGUAGE和LC_ALL为C.UTF-8,并通过source命令使更改生效,最终确保在命令行中能正常输入中文。此外,还提到在更新镜像后确保设置持久化的方法。

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

在命令行中,输入中文出现乱码或者键入错误的情况:

这里我想输入:”中文“,但是出现乱码。

并且,我在之前已经创建好镜像,通过镜像生成了容器。

1.使用locale查看当前容器的系统使用的字符集。

2.使用locale -a查看当前容器的系统支持可以使用的字符集。

3.在一些博客中,都建议修改/etc/profile,添加系统变量LANG等。

1)/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
注:在这里我们设定是为所有用户可使用的全局变量。

2)/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

但是可以看出,/etc/profile中只有当用户第一次登陆时,被执行。所以当你在该文件中修改后,并且docker commit后,再次通过更新后的进行运行容器,并不会生效。

所以,在这里,我修改/etc/bashrc,来更新系统字符集变量:

export  LANG="C.UTF-8"
export LANGUAGE="C.UTF-8"
export LC_ALL="C.UTF-8"

修改后,记得要生效:

source /etc/bash.bashrc

再次通过locale查看是否更新了系统字符集:

root@7bfce1075a4b:/workspace# locale

LANG=C.UTF-8
LANGUAGE=C.UTF-8
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=C.UTF-8

最后,可以看出能够正常在命令行中输入中文:

root@7bfce1075a4b:/workspace# 中文

最后的最后,别忘记提交镜像更新:你可以选择覆盖当前镜像,只要仓库名:标签名和你要覆盖的一样就行

docker commit -m="run command" -a="wkn" 7bfce1075a4b wkn/pattern-ai:torch_1.11.0_v

再次通过更新后的镜像运行一个新的容器:

wkn@MightyDragon:~$ docker commit -m="run command" -a="wkn" 7bfce1075a4b wkn/pattern-ai:torch_1.11.0_v1
sha256:18b066686fe87306bb1b09e2e98c89af04a23ec6054edbf3cc73bd1dc72826a7
wkn@MightyDragon:~$ docker run -v /home/wkn:/home/wkn  -it --gpus '"device=0,1"' 18b066686fe8
root@05c9c8706296:/workspace# 中文

可以看出,中文能够正常输入了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值