棋子 · 10月23日

GIT batch的支持中文的方法和系统建议

GIT batch是window下原生的GIT命令行终端,兼顾了GIT的命令特性,同时也支持很多UNIX的原生的bash交互方法。但是由于编码问题,在使用GIT bach的时候,用户可能会遇到中文支持的问题。这里简单介绍一下GIT batch在Windows系统下如何有效的支持中文显示的问题。闲言少叙,ICer GO!

image.png

GIT batch的GUI界面支持中文

GIT batch的GUI默认是英文界面,用户可以使用下列步骤启用中文GUI界面

1.在GIT batch空白处,右击鼠标,选择Option…

image.png

2.在弹出的界面依次选择Window -> Ui language -> zh_CN

image.png

3.返回GIT batch,再在空白处单击鼠标右键,这个时候可以看到GIT batch的GUI就是中文格式了。

image.png

GIT batch支持中文显示

GIT batch支持中文的前提是需要和系统的代码页保持一致。为了获取这个信息,这里有两个方法

1.通过txt 文本文件

用户创建一个txt文本文文件,并简单书写一些中文文字,然后单击文件->另存为…,这个时候在界面里边会出现编码的选项。

image.png

这个默认的编码来自于windows系统的区域配置(控制面板->区域,),中文区用户通常是:中文(简体,中国),这个信息很重要,所有的文件都是使用这个默认编码进行存储的,通常不建议修改,否则已经保存的文件可能都会出现编码问题。

image.png

记事本里边的另存为的ANSI编码是指:美国国家标准学会(American National Standards Institute),这个组织规定了不同国家的代码页(code page),这里给中国分配的是GBK,对应的代码页就是:936 (或者cp936). 通过这个信息可以看到,当前系统使用的代码页是GBK而非utf-8.

2.通过命令chcp查看

打开cmd终端,使用chcp,可以查看到系统默认的编码方式

image.png

3.代码页对终端(terminal)的影响

对于 windows系统,可以使用命令file查看一个文本文件的编码方式,譬如:

image.png

PS:记事本之类的GUI程序·可以自动识别编码方式,双击文件都可以准确显示文件内容:

image.png

但是对于终端(无论是cmd还是GIT batch),在同一时刻只能支持一种编码方式(即通过chcp返回的编码方式),这里的返回是936,所以只有text_ANSI.txt可以被正确显示:

image.png

当然chcp也可以对当前终端的代码页进行更改(65001就是utf-8的代码页),以便正确显示对应代码页的文本内容

image.png

4.GIT batch支持中文显示

GIT batch也是一个终端,同样也受上述问题的影响,在GIT batch里边,可以使用file命令对文件进行编码方式的查询,如果不做干预,GIT batch 默认使用的是utf-8的代码页(65001),所以,默认会有下面的情形:

image.png

由于GIT batch不能使用chcp命令改变代码页,用户如果需要在GIT batch显示ANSI编码方式的文件,需要采用下列方式进行文本的编码方式更改:选项 -> 文本 -> 本地 -> 字符集 (GBK就是:代码页936)

image.png

这样就可以正确显示text_ANSI.txt文件了(对应的:text_utf-8.txt就不能正确显示了)

image.png

  • text_ANSI.txt不能正确显示,
  • text_utf-8.txt可以正确显示,

5.GIT batch的消息打印和命令回显

GIT batch和VIM一样,默认使用的是utf-8的编码方式,如果直接使用ls等命令,GIT batch可以很好的显示中文字符。不足的是

  • 不能在终端中使用cat命令显示ANSI编码的文本
  • 不能使用VIM编辑ANSI编码的文本(VIM的默认编码也是utf-8)

除过上述不便,其余都很丝滑。

PS:如果在GIT batch里边配置了GBK的编码页,除过catANSI编码的文件可以正常显示中文,其他所有命令的中文都会编程乱码

6.python的对代码页的处理

在python里边,默认是使用系统的区域的编码对文件进行读取的,如果在GBK下,python是无法对utf-8的中文文件进行争取读取的,如果尝试读取,会有下面的问题

image.png

这个时候可以使用open函数里边的encoding选项处理utf-8文件的读取:

image.png

PS:终端打印和python是两个独立的系统,使用各自的方式处理代码页,互相独立,这里请不要混淆,

系统建议

对于中文windows系统,默认是GBK(代码页:936)的情形,但是对于常用的软件通常都是utf-8的默认编码,如果是终端类的工具,譬如:vim和GIT batch,可能对于ANSI的文件兼容性不好,这时候建议用户使用GVIM,记事本等GUI类的工具进行文本编辑。如果是python等编程工具,用户可以对目标文件的编码进行配置,这个并不需要调整原始文件的编码方式,

综上:系统中存在多个编码格式的文件本身就是常态,用户也不用去特意干预,但是但编辑、读取等操作的时候,需要采取正确的打开方式,保证正确的操作,这样才不会破坏原有的文本内容。

END

作者:艾思后端设计
文章来源:艾思后端实现

推荐阅读

更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
19808
内容数
1305
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息