背景:
在容器内,发现无法识别文件夹中文名,以及文件内中文,也都是如下这种八进制形式:
#这是文件夹名“测试” ls的输出
#应该输出 "测试"
\346\265\213\350\257\225
我以为是我用的shell环境问题(zsh),后来发现,即便在~/.zshrc中加入了
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
还是不行
一番查找后,发现是,根本没有en_US.UTF-8这个东西,于是明白了,因为是容器嘛,不像桌面端系统一样经历了图形界面的安装。
解决方案:
① 先安装locales,这个包在Debian/Ubuntu及其衍生发行版中用作区域设置,用于设置用户语言、所在地区以及对应的一些区域变量
sudo apt install locales
② 重新设置locales相关信息
sudo dpkg-reconfigure locales
它会给出一大堆,让你选择,你只需要找到en_US.UTF-8和zh_CN.UTF-8的编号,我这里是158 488,于是
(Enter the items you want to select, separated by spaces.)
(input) 158 488
Locales to be generated: (input) 158 488
然后你选择一个为默认语言,出现下面的信息,就算成功
Generating locales (this might take a while)...
en_US.UTF-8... done
zh_US.UTF-8... done
Generation complete.
然后,识别中文就不会出现乱码了,对在容器内读git的log比较友好。