Mac 本地终端中文无乱码, 远程服务器中文乱码

下面有些配图丢失了, 待补充

缘起

终端命令行操作时碰到中文乱码的问题, 很困惑, 因为

  • 本地文件的中文能够正常显示;
  • 登录远程服务器后, 中文显示不正常;

尝试解决

第1步 分析

既然本地的中文无乱码, 而远程服务器的中文乱码, 肯定是本地设置编码格式和远程服务器的不一致;


第2步 查看远程服务器的编码格式

命令行 cat /etc/sysconfig/i18n, 显示结果是 LANG="zh_CN.UTF-8"


第3步 查看本地的编码格式

命令行 locale
结果如下图所示:
[图片上传失败...(image-184a62-1540029855628)]

证实的确是本地编码设置的问题.


第4步 修改本地编码设置

命令行 export LANG=zh_CN.UTF-8
[图片上传失败...(image-e6cbc2-1540029855628)]

这时候使用测试远程服务器, 能够正常显示了:


中文乱码04

波折

但是第二次再次登录服务器后发现仍然中文乱码! 使用命令行 locale, 发现之前的 locale 设置被重置回去了.

查询后得知 export 命令的效力只限于当次登陆期间, 要永久修改配置, 需要在 shell 的配置文件中修改. 由于自己使用的是 zsh, 那么则需要在.zshrc 文件中设置:

执行命令 vi ~/.zshrc, 然后在末尾添加:

export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8

最后, 执行命令 source ~/.zshrc 使配置立即生效.


反思

Shell 的 export 命令的效力只限于当次登陆期间.

  • 需要永久生效, 需要写入 Shell 的配置文件
    • echo $SHELL 查看系统当前使用的 Shell
    • 如果使用的是 /bin/bash,配置文件在 ~/.bashrc 或者 ~/.bash_profile.
    • 如果使用的是 /bin/zsh,配置文件在 ~/.zshrc.
  • 修改配置文件后, 需要立即生效, 可以通过 2 种方式:
    • 输入 source ~/.zshrc 或者 source ~/.bashrc 来使配置立即生效,
    • 或者完全关闭命令行,然后重新打开

参考文章


文章历史

  • 2017/02/12 (第一次发布)
  • 2017/03/14 增加"反思"章节
  • 2017/04/30 在"反思"章节增加"永久生效"和"立即生效"的方法
  • 2017/05/03 修改润色
  • 2017/06/04 修改润色
  • 2018/11/17 完善bash的配置文件. 感谢684a80fc4bd4的补充

如果你觉得我的文章对你有用, 麻烦给些改进的建议, 或者打个"喜欢" _

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,571评论 9 467
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,954评论 6 342
  • 可以看我的博客 lmwen.top 或者订阅我的公众号 简介有稍微接触python的人就会知道,python中...
    ayuLiao阅读 3,154评论 1 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,932评论 18 139
  • 这个世界很嘈杂。人们习惯评论。习惯打标签。总有人四处炫耀。总有人不可一世。 这个世界也很残酷。你嘶声裂肺,别人也无...
    洛阳风轻阅读 152评论 0 1