linux系统乱码问题

最近使用ubuntu操作系统(客户端)在ssh连接linux服务器的时候发现乱码问题,但是本机查看中文显示中文没有问题,只是在使用终端more查看本地或远端gbk之类中文编码的文件时出现乱码。折腾了挺久,终于算是搞懂了点皮毛,这里做一点记录。

服务端字符编码

  • 查看locale设置

优先级的关系:LC_ALL > LC* >LANG_

设置格式为:语言[_地域[.字符集]]

locale设定案列:

  1. 设定LC_ALL= zh_CN.XXXX,或LANG=zh_CN.XXXX,中文系统(菜单等都会变成中文)。
  2. 设定LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX后可以输入中文,但是系统菜单等还是英文。
  3. 什么都不设置,那么POSIX作为lcoale,也就是C locale。

LANGUAGE是设置应用程序的界面语言。

LANG是优先级很低的一个变量,它指定所有与locale有关的变量的默认值。

  • 查看所有支持的语言

    cd /usr/share/i18n/locales进入目录后执行ls命令查看。

    locale -a 命令查看。

    安装字体: sudo locale-gen en_US.UTF-8

  • 配置

    在/etc/default/locale 配置文件中配置

~$ more /etc/default/locale
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_MONETARY="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"

配置完需要重启系统,如果原来LANG值en由改为zh重启后系统会变成中文环境,菜单/设置等。

这个是系统全局的设置,也可以针对系统各个用户修改。

客户端字符编码

客户端就是连接使用的工具,比如我使用ubuntu去连接服务器,可以使用系统的terminal终端、也可以使用我的securecrt工具。那这时连接使用的客户端字符集必须和服务器一致,否则在查看服务器的文件时可能出现中文乱码。

比如下面例子:

服务器端使用的是LANG=zh_CN.gb18030编码,客户端使用的是utf-8编码





客户端terminal的编码可以通过菜单栏的 terminal->Set Character Encoding查看,比如我的设置成了utf-8.

结果查看文件就出现了乱码:

如果使用工具securtCRT的话,可以通过菜单栏:Options->Session Options->Appearance->Character encoding项来查看。

编码问题总结

如果是使用客户端远程登陆查看远程的文件的话,只要保证文件的编码和客户端的编码格式一致即可,当然使用客户端查看本地文件也是如此。

如果是系统产生的乱码,比如输入su到哪个用户下的时候出现乱码,那就是系统编码和客户端编码要一致。

一般抓住服务端(或是文件)和客户端编码一致这一点,就不会出现乱码的问题。

最后附上vim设置可以查看多种编码文件的设置:

在文件/etc/vim/vimrc中加入如下信息:

set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=prc

这么vim可支持多种编码,而输出的客户端只需要设置为utf-8格式即可。

最新文章

  1. Windows Server 2008 R2域控组策略设置禁用USB
  2. python3下安装Django
  3. Redis-统计活跃用户
  4. 向Array中添加二分插入排序
  5. Altium designer总结
  6. Swift常量和变量以及命名规范
  7. 模板与继承之艺术——奇特的递归模板模式(CRTP)
  8. IE/Firefox每次刷新时自动检查网页更新,无需手动清空缓存的设置方法
  9. SQL Server中的临时表和表变量
  10. github jekyll site不再使用Maruku由于Markdown翻译员,但kramdown
  11. psql: FATAL: role “postgres” does not exist 解决方案
  12. Flex4 布局 元素index
  13. easyUI parser的使用
  14. 第6章 Overlapped I/O, 在你身后变戏法 ---被激发的 Event 对象 -4
  15. 【翻译】为Ext JS和Sencha Touch开发人员准备的应用程序监测(App Inspector)
  16. java之Spring(AOP)前奏-动态代理设计模式(上)
  17. Oracle数据库表分区
  18. vue 手机端样式统一配置
  19. Python3版本中的filter函数,map函数和reduce函数
  20. 谢宝友:会说话的Linux内核

热门文章

  1. Git本地操作相关介绍
  2. GitHub 上下载代码运行报错 :'The sandbox is not sync with the Podfile.lock\'
  3. JAVA高级编程序——JDBC(连接mysql数据库)——(一)
  4. PHP文件上传处理
  5. Alamofire源码解读系列(二)之错误处理(AFError)
  6. VS2012 百度云下载 开发工具
  7. Ansible 系列之 Ad-Hoc介绍及使用
  8. mybatis系列笔记(4)---输入输出映射
  9. 原生js中slice()方法和splice()区别
  10. TCP和UDP 的区别和适用场合