如何让PowerShell显示中文不乱码

如今软件日益国际化的今天,Windows下的命令行却还顽固地使用本地编码来显示数据,这导致用UTF-8编码的文件在命令行显示乱码。虽说Cygwin的内核cygwin1.dll有自动转换功能,可是因为GB2312中没有变音符号等特殊字符,某些字符仍然不能正常显示。
虽然控制面板可以改控制台编码,可是你会发现并没有UTF-8。其实Windows是支持UTF-8控制台的,只是把它藏起来了。
第一步,打开开始->所有程序->右击附件->选择资源管理器【Windows8/8.1请打开开始屏幕,右击命令提示符,选择打开文件位置】,然后复制一份快捷方式,名字随便取。
209939

第二步,双击那个快捷方式,打开“命令提示符”窗口。接下来我们要了解一个东西:代码页(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命令可以改变代码页
209933
209934
(图片待会上传)

于是乎第三步,敲下chcp 65001后窗口变成这般模样:
209935


一切正常?转到带有中文的文件夹下敲下dir
209936


怎么回事呢?最初我也不清楚,于是百度了一下,原来是“点阵字体”惹的祸,在这里更改:
第四步,点击窗口左上角图标,在弹出菜单中选择“属性”
209937

选择Consolas或Lucida Console

切到【选项】选项卡,发现代码页已更改
209948


第五步,单击“确定”保存设置,就OK啦!
209938


要注意必须进行第四步和第五步,即使不更改字体,因为这样可以保存“代码页”的设置。不这样的话下次“代码页”仍然是936。

这样设置以后很多欧洲语言就可以显示了。组合变音符号(不是固有变音符号)会显示为单一的字符,因为要保证等宽。

PowerShell如法炮制即可。







解决方法:

其实嘛一看就知道是encoding的问题,英语为默认语言的环境里,PowerShell默认的Encoding是AscII

最简单的方法就是改用PowerShell ISE,它可以显示非英语字符。在操作SharePoint数据的时候只要在启动ISE的时候运行一下下面的语句就可以,相比于Management Console方便很多。

Add-PSSnapin Microsoft.SharePoint.PowerShell

 

另外一个解决方法是把Encoding改为UTF8,运行下面的语句就可以了。

$OutputEncoding = New-Object -typename System.Text.UTF8Encoding

 


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值