本帖最后由 acmilan 于 2014-1-2 11:02 编辑 如今软件日益国际化的今天,Windows下的命令行却还顽固地使用本地编码来显示数据,这导致用UTF-8编码的文件在命令行显示乱码。虽说Cygwin的内核cygwin1.dll有自动转换功能,可是因为GB2312中没有变音符号等特殊字符,某些字符仍然不能正常显示。
虽然控制面板可以改控制台编码,可是你会发现并没有UTF-8。其实Windows是支持UTF-8控制台的,只是把它藏起来了。
第一步,打开开始->所有程序->右击附件->选择资源管理器【Windows8/8.1请打开开始屏幕,右击命令提示符,选择打开文件位置】,然后复制一份快捷方式,名字随便取。
第二步,双击那个快捷方式,打开“命令提示符”窗口。接下来我们要了解一个东西:代码页(codepage)。
什么是代码页呢?在很久以前,Windows NT出现了(Windows NT就是Windows XP和Windows 7的老祖宗),为了确保不同语言间的兼容性,它使用Unicode存储字符串(Unicode就是万国码,你可以认为它可以编码世界上所有的文字),可是当时大量程序使用本地编码(例如大陆的GB2312编码简体中文(GBK可以使用繁体),台湾的Big5编码繁体中文(其实也可以简体),美国的ISO8859-1只能编码英文和有限的欧洲文字),这样为了兼容性它也支持本地编码,但是系统内核是需要Unicode的,所以就发明了“代码页”这个中介,用来转换本地编码和Unicode。
“代码页”使用一个数字来编号转换表,例如437就是美国英语(ISO8859-1),936就是简体中文(GBK),950就是繁体中文(Big5)。而65001就是UTF-8了。
命令提示符也使用代码页进行转换,而我们要做的就是将代码页改成65001(就是UTF-8了)。
怎么做呢?
首先help一下,发现chcp命令可以改变代码页
(图片待会上传)
于是乎第三步,敲下chcp 65001后窗口变成这般模样:
一切正常?转到带有中文的文件夹下敲下dir
怎么回事呢?最初我也不清楚,于是百度了一下,原来是“点阵字体”惹的祸,在这里更改:
第四步,点击窗口左上角图标,在弹出菜单中选择“属性”
选择Consolas或Lucida Console
切到【选项】选项卡,发现代码页已更改
第五步,单击“确定”保存设置,就OK啦!
要注意必须进行第四步和第五步,即使不更改字体,因为这样可以保存“代码页”的设置。不这样的话下次“代码页”仍然是936。
这样设置以后很多欧洲语言就可以显示了。组合变音符号(不是固有变音符号)会显示为单一的字符,因为要保证等宽。
PowerShell如法炮制即可。
200字以内,仅用于支线交流,主线讨论请采用回复功能。