docker 里调试不支持中文路径解决
docker里系统默认编码为 ANSI_X3.4-1968 , 一遇到中文就会报错, 需要将其改为UTF-8
root@a0d222e3c533:# python cv2_imread.py
Traceback (most recent call last):
File "cv2_imread.py", line 11, in <module>
image_pil = Image.open(filename).convert("RGB")
File "/usr/local/lib/python3.6/dist-packages/PIL/Image.py", line 2843, in open
fp = builtins.open(filename, "rb")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 36-37: ordinal not in range(128)
解决:
//查看当前系统编码
root@a0d222e3c533:# 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=
设置中文 export LC_ALL=zh_CN.GBK
warning信息不用管
root@a0d222e3c533:# export LC_ALL=zh_CN.GBK
bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.GBK): No such file or directory
root@a0d222e3c533:# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=
LANGUAGE=
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=zh_CN.GBK
//查看当前系统默认编码
root@a0d222e3c533:# locale charmap
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
ANSI_X3.4-1968 //当前编码格式为ANSI_X3.4-1968 , 一旦遇到中文便会报错
//安装中文包:apt-get install language-pack-zh-hans
root@a0d222e3c533:# apt-get install language-pack-zh-hans
root@a0d222e3c533:# locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
C
C.UTF-8
POSIX
zh_CN.utf8
zh_SG.utf8
//设置
export LC_ALL=zh_CN.utf8
export LANG=zh_CN.utf8
export LANGUAGE=zh_CN.utf8
root@a0d222e3c533:# export LC_ALL=zh_CN.utf8
bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.utf8): No such file or directory
root@a0d222e3c533:# export LANG=zh_CN.utf8
root@a0d222e3c533:# export LANGUAGE=zh_CN.utf8
root@a0d222e3c533:# locale
LANG=zh_CN.utf8
LANGUAGE=zh_CN.utf8
LC_CTYPE="zh_CN.utf8"
LC_NUMERIC="zh_CN.utf8"
LC_TIME="zh_CN.utf8"
LC_COLLATE="zh_CN.utf8"
LC_MONETARY="zh_CN.utf8"
LC_MESSAGES="zh_CN.utf8"
LC_PAPER="zh_CN.utf8"
LC_NAME="zh_CN.utf8"
LC_ADDRESS="zh_CN.utf8"
LC_TELEPHONE="zh_CN.utf8"
LC_MEASUREMENT="zh_CN.utf8"
LC_IDENTIFICATION="zh_CN.utf8"
LC_ALL=zh_CN.utf8
//再次查看,已经换成了utf-8编码
root@a0d222e3c533:# locale charmap
UTF-8