问题描述:在Ubuntu docker容器中,打开.csv文件时显示乱码
问题如图
错误分析:
用locale查看所用容器支持的字符集
从输出可以看到,系统使用的是POSIX字符集,POSIX字符集是不支持中韩文的,而UTF-8是支持中韩文的 只要把系统中的环境 LANG 改为”UTF-8”格式即可解决问题。
查看容器支持的语言(可用语言环境):
locale -a
(我的情况)
解决方案方案
方法①:针对文件乱码
一般情况下保存的csv文件都是默认纯csv文件,如图
在windows可以打开,但在ubuntu上会出现乱码,因为ubuntu是utf-8,修改方法如下:
- csv文件另存为,选择保存类型为csv文件类型,选择后缀为CSV UTF-8 类型,然后保存。
这样子上传到ubuntu上就不会乱码了。
方案②:针对于文件内容乱码
gb2312只适应于中文,
iconv -f gb2312 -t utf8 -c 文件名和后缀
例如我的文件是s-labels.csv,那么转换代码是
iconv -f gb2312 -t utf8 -c s-labels.csv
方案③:针对于系统字体乱码
中文输入
export LANG="C.UTF-8"
export LANGUAGE="C.UTF-8"
export LC_ALL="C.UTF-8"
修改后如图
(可选)显示韩文的情况下
export LANG=en_US.UTF-8
export LANGUAGE=ko_KR.UTF-8
修改后,更新:
source /etc/bash.bashrc
错误1:System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to create bus connection: Host is down
系统未以systemd为init系统启动(PID 1)。无法操作。
创建总线连接失败: 主机已停机
这种情况下我看别的文章中是重新设置一个docker容器,但是我容器中不是网络的问题,出来csv文件乱码,且容器有很多模型及数据集,没舍得重新运行一个容器,最终实现方案①完美解决!问题可能相同,但是解决方案可以不同~