如果同时出现如下2种情况,那么可能该博客对你有帮助:
- Ubuntu shell无法输入中文问题
- Python3出现 UnicodeEncodeError: 'utf-8' codec can't encode characters in position xxx: surrogates not allowed
环境:
Ubuntu16.04
Python3.6.3
问题描述:无法在shell中输入中文,同时在Python3中可以print(),但是处理该文件(如读数据)会报错
前提:
服务器安装了中文字库,一般在如下位置:
$ ls /usr/share/fonts/truetype/cn_font
SIMHEI.TTF SIMKAI.TTF SIMLI.TTF SIMSUN.TTC SIMYOU.TTF STHUPO.TTF STXINGKA.TTF STXINWEI.TTF
如果没有随便从Windows里面复制几个字体进去
1、检查服务器环境
root@75f681e080e4:/# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
如果显示是上面的,则语言配置不对,于是修改:
vim /etc/environment
添加如下:
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
2、安装中文环境支持:
cd /usr/share/locales/
ls
./install-language-pack zh_CN
3、对于非root用户,可能上面方法没有效果,解决方案:
在该用户的home路径中,修改或新建bash_profile文件,并写入:
pre@pre-store221:~$ cat ~/.bash_profile
export LANG=zh_CN.UTF-8
新开一个session即可(注意可能会导致python默认版本变化,原因不明,我重新做了一个软链接解决)