Cygwin 各种情况下中文乱码--终极解决方案

时间:2023-03-08 15:09:12
Cygwin 各种情况下中文乱码--终极解决方案

0.引言

本人从进公司以来一直负责公司Android平台下产品的NDK开发,用的工具:

01. Google的adt-bundle(集成了eclipse和sdk)

02. NDK

03. Cygwin

(PS:  虽然比较新的ndk版本,好像是从 r7开始就已经可以不用Cygwin了,

    但是本人从刚开始接触Android NDK开发时就用的是Cygwin,在Window操作系统下足够用了,

    作为懒人,既不想折腾到Linux下,又对命令行的操作比较留恋,所以就这么一直用着。高手请勿见怪。)

1. 穷

今天在做一个小测试的程序的时候,使用 javah 命令,想看一下有关 javah 的详细帮助说明,突然发现那些中文说明都乱码了。

话说当初刚装 Cygwin 不久,在看代码里面注释的时候发现中文显示乱码,

当时随便修改了 options 选项里面 Text 的 locale character set ,看能正常显示了就没再继续折腾了。

想不到今天查看帮助文档显示的时候竟然又发现了乱码,只好网上各种查找资料,亲自实践,不断尝试。。。

这次本人决定整理一份终极解决方案,一次性解决,永绝后患。

网上绝大部分都是相互转载,内容翻来覆去雷同相似度很高,却最终也也没有一个完全解决各种情况的中文乱码方案。

有的是文件注释里面中文正常显示了,但是很多英文倒变成了乱码。(如命令“ls -l”中的total、man查看帮助的部分英文)

有的比较好的解决方案实现了命令帮助里面中文正常显示,但是有些地方(比如 ls -la 显示的文件日期)却变成了英文。

2. 变

现在分享本人的完美终极解决方案:

2.1 界面设置

  非文本编辑状态下,在界面上右键,选择 options 选项里面 Text 的设置,

  Local 一栏选择 C (或者选 Default 的话系统也会自动默认为 C), Character set 一栏选择 GBK。如图所示:

   Cygwin 各种情况下中文乱码--终极解决方案

2.2 代码配置

  1. 先 “ cd ~ ” 进入用户目录, 打开目录下 .bash_profile 文件,在末尾添加如下几行代码:

  Cygwin 各种情况下中文乱码--终极解决方案

  2. 在当前目录下,打开 .inputrc 文件,找到有关 bash 命令对8 字节字符处理的代码,去掉这句 set 前面的注释符号(即前面的#号)。

Cygwin 各种情况下中文乱码--终极解决方案

  3. 在当前目录下,打开 .bashrc 文件, 让 ls 命令显示中文和颜色,添加代码如下:

Cygwin 各种情况下中文乱码--终极解决方案

  (其实经过本人实践,发现这一步对中文乱码的处理没有影响,只是针对 ls 命令做的一个视觉显示改进。不过确实看起来舒服多了。^_^)

3. 通

所谓 “ 穷则变,变则通。” 现在你会发现在这份终极方案处理下,Cygwin 已经完美支持各种情况下的中文显示了。

各种情况例子截图如下:

1. ls -la 命令:

Cygwin 各种情况下中文乱码--终极解决方案

2. javah 命令

Cygwin 各种情况下中文乱码--终极解决方案

3. 查看代码中的中文注释

Cygwin 各种情况下中文乱码--终极解决方案

本文系本人原创,供各位学习交流,如有需要转载请标注出处,并给出本原文链接。谢谢各位支持。^_^