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
,把这行注释就可以了