如何让PowerShell显示中文不乱码

2023-11-18

如今软件日益国际化的今天,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

 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让PowerShell显示中文不乱码 的相关文章

随机推荐

  • 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是 看的多动手的少 特别是对于一些项目的开发学习就更少了 没有一个完整的项目开发过程 是不会对整个开发流程以及理论知识有牢固的认知的 对于怎样将所学的理论知识应用到实际开发中更是不得而知了 以上就是我们在
  • 入门知识(一)矢量图与位图的区别

    矢量图与位图有什么区别 转自https jingyan baidu com article 54b6b9c0dbef682d583b4722 html 分步阅读 前几日有同事总是不时的问我什么是矢量图什么是位图及它们之间有什么区别 今天咱们
  • 打印1-100中3的倍数 (C语言)

    代码 include
  • MySQL安装时出现无法正常启动的问题

    我刚在官网下载了MySQL8 0 18的最新压缩包版本 跟着网络上的安装教程走 发现在cmd窗口用net start mysql命令无法正常启动 在查看my ini文件和环境变量配置没有问题之后 重新以管理员身份打开cmd窗口 仍然失败 百
  • LeetCode 2011. 执行操作后的变量值

    存在一种仅支持 4 种操作和 1 个变量 X 的编程语言 X 和 X 使变量 X 的值 加 1 X 和 X 使变量 X 的值 减 1 最初 X 的值是 0 给你一个字符串数组 operations 这是由操作组成的一个列表 返回执行所有操作
  • python--socket(套接字/插口)

    socket是什么 是进程间通信的一种方式 它与其他进程间通信的一个主要不同是 它能实现不同主机之间的进程通信 我们网络上各种各样的服务大多都是基于socket来完成通信的 例如我们浏览网页 qq聊天 收发emil Socket是应用层与T
  • 民营经济挑战未来发展

    上周末 一场 中国民营经济六十年研讨会 在北京聚集了改革领域的多位高官和专家 曲折和成就 经验和教训 理论问题和现实问题 都在会议上碰撞 此次会议由中央社会主义学院 中国经济体制改革研究会 中国民 私 营经济研究会 北京开达经济学家咨询中心
  • 创建git项目并提交

    1 创建仓库 2 点击创建 3复制gitee码云的HttpS连接 4 提交上传 打开项目并点击菜单栏上的 CVS Import into version control Create Git Repository 创建本地仓库 在打开的 C
  • 小米笔记本Pro安装Win+Mac双系统,时间同步不一致问题!

    安装win和Mac 双系统 时间同步不一样的问题 可以通过补丁解决 Win注册表CMD注入或Mac下安装注入 二选一打补丁 1 Win下操作以管理员运行CMD命令行Reg add HKLM SYSTEM CurrentControlSet
  • 基于时空网络的出租车OD需求预测-简介

    最近单曲循环的一首歌 分享给大家 1 文章信息 Contextualized Spatial Temporal Network for Taxi rigin Destination Demand Prediction 2019发在IEEE
  • RecyclerView应用复习

    导包 implementation androidx recyclerview recyclerview 1 1 0 recyclerview implementation com zhy base rvadapter 3 0 3 adap
  • AttributeError: module ‘torch.cuda.amp‘ has no attribute ‘autocast‘

    参考 https zhuanlan zhihu com p 165152789 https zhuanlan zhihu com p 176998729 https pytorch org docs stable amp html http
  • 渠道系统和 OA系统待办事项接口

    OA待办 已办 以及通过ltpatoken查找用户拼音接口 接口采用http get方式 将需要的参数传入 Content Type application json charset UTF 8 getMethod addRequestHe
  • 错误: 无法从静态上下文中引用非静态 变量 this

    JAVA菜鸟笔记 错误 无法从静态上下文中引用非静态 变量 this 1 09 17 Hello java 错误 无法从静态上下文中引用非静态 变量 this 错误原因 main方法是一个静态方法 而静态方法中无法引用非静态变量 因为静态方
  • STC单片机 延时 那点事,DS18B20的苦

    DS18B20采用 一线总线 对时序的要求是特高啊 要想精准延时 有两个选择 其一当属定时器 其二用汇编一条一条的来算 但 DS18B20延时的时候 以上两条都不会选 还有其他选择 第三方的Delay函数 比如STC ISP VXX X提供
  • 惊艳的时间轮定时器

    问题引入 游戏里面每个Player身上有很多buffs 在每一个tick 最小时间段 都要去检查buff里面的每一个buff是不是过期 产生的效果如何 造成在每个tick里面都去遍历一个长list 明显很不好 怎么优化 1 原始模型 buf
  • c++智能指针

    C 智能指针详解 C 有四个智能指针 auto ptr unique ptr shared ptr weak ptr 其中后三个是C 11支持 第一个已经被C 11弃用 智能指针介绍 智能指针主要用于管理在堆上分配的内存 它将普通的指针封装
  • IP子网划分

    一 子网划分基础 需要掌握二进制与十进制之间的熟练转化 第一篇已经详细介绍过 二 IP地址组成及其分类 目前的IP地址是 IPv4 地址 1 IP地址有两部分组成 网络号码字段 net id 用于区分不同网络 主机号码字段 host id
  • HarmonyOS基础答疑

    本帖收录 HarmonyOS开发者交流群 常见的问题答疑 另外有相关问题可以补充到本帖 Q1 如何获取DevEco Studio 2 0 版本计划 获取方式 答 现在起 可在HarmonyOS官网上 下载HarmonyOS应用开发IDE D
  • 如何让PowerShell显示中文不乱码

    如今软件日益国际化的今天 Windows下的命令行却还顽固地使用本地编码来显示数据 这导致用UTF 8编码的文件在命令行显示乱码 虽说Cygwin的内核cygwin1 dll有自动转换功能 可是因为GB2312中没有变音符号等特殊字符 某些