july
july
发布于 2023-03-17 / 95 阅读
0

Debian ssh终端乱码问题

Debian ssh终端乱码问题

前言

每次进SSH都默认为C,带有中文的内容就会乱码,但是在centos 下就没有这个问题。locale`命令查看当前系统所有字符集,也可以理解为查看当前语言环境的所有环境变量的名称和值

root@localhost:~$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

相关说明:

locale把按照所涉及到的文化传统的各个方面分成12个大类,这12个大类分别是:

1、语言符号及其分类(LC_CTYPE)
2、数字(LC_NUMERIC)
3、比较和排序习惯(LC_COLLATE)
4、时间显示格式(LC_TIME)
5、货币单位(LC_MONETARY)
6、信息主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等(LC_MESSAGES)
7、姓名书写方式(LC_NAME)
8、地址书写方式(LC_ADDRESS)
9、电话号码书写方式(LC_TELEPHONE)
10、度量衡表达方式 (LC_MEASUREMENT)
11、默认纸张尺寸大小(LC_PAPER)
12、对locale自身包含信息的概述(LC_IDENTIFICATION)。

初次解决

按照第 8 章 基础配置:网络,账户,打印…… (debian.org) 这个配置了一遍

安装locales

sudo aptitude install locales

重新配置本地语言

sudo dpkg-reconfigure locales

往下选中en_US.UTF-8 UTF-8,按tab键选中Ok

选中en_US.UTF-8 UTF-8,再按tab键选中Ok

这个时候就会给你自动配置

完全解决

但是当我再次进入时发现不对劲,当前环境还是这个样子

root@localhost:~$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

把全部配置看一遍,想到了有个文件.bashrc ,点进入看了下,一瞬间明白了

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
export LC_ALL=C
# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

export LC_ALL=C 每次ssh 连接都会把所有编码改为c,把这行注释就可以了