1. 程式人生 > >Docker終端無法輸入中文問題解決

Docker終端無法輸入中文問題解決

cti roo phone 使用 mon statement mar per col

前言: 某日在docker裏搭建了一套MySQL服務,發現在MySQL命令行內無法輸入中文 中文顯示也以?代替,起初以為是MySQL字符集的問題 檢查之後未解決問題,又退出到容器終端 發現同樣不能輸入中文,由此推斷 是系統字符集出現問題,現將解決過程記錄如下:

未解決前:

# 進入容器 查看字符集
[root@master2 ~]# docker exec -it b18f56aa1e15 /bin/bash
root@b18f56aa1e15:/# 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=
# 查看容器支持的字符集
root@b18f56aa1e15:/# locale -a
C
C.UTF-8
POSIX

不能輸入中文原因:系統使用的是POSIX字符集,POSIX字符集是不支持中文的,而C.UTF-8是支持中文的 只要把系統中的環境 LANG 改為"C.UTF-8"格式即可解決問題

只要這樣進入容器即可輸入中文: docker exec -it b18f56aa1e15 env LANG=C.UTF-8 /bin/bash

[root@master2 ~]# docker exec -it b18f56aa1e15 env LANG=C.UTF-8 /bin/bash
root@b18f56aa1e15:/# 你好
root@b18f56aa1e15:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 80
Server version: 5.7.17-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql> 你好

註意:這樣修改只是臨時修改。要永久修改,需要在創建容器時在dockerfile中設置。
K8s進入pod不能輸入中文 也可用此方法解決。

Docker終端無法輸入中文問題解決