这个问题在这里已经有了答案:
Displaying Unicode in Powershell
(7 个回答)
9 个月前关闭。
大家好,
作为控制台/终端爱好者和数据库管理员 (PostgreSQL),使用正确的字符编码对我来说至关重要。
因此,我希望我的客户端控制台/终端窗口始终设置为例如UTF-8。
回到 Windows 的 CMD.EXE,这个尝试就像输入命令 chcp 65001
一样简单。设置所需的 code page identifier .
现在,我正在切换到 PowerShell 并且设置字符编码似乎很奇怪,恕我直言。
我对如何将 PowerShell session 设置为 UTF-8 做了一些研究,我发现我需要 三 实现这一目标的步骤/命令。
PS C:\> $OutputEncoding = [System.Text.Encoding]::UTF8
PS C:\> [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
PS C:\> chcp 65001
尽管前两个命令不直观且难以记住......
遗漏其中之一会导致无法正常工作!
此外,仅设置其中一个似乎对其他人没有影响。
所以,我必须设置所有三个才能使用 PostgreSQL 的
psql
数据库客户端。否则我在导出/导入数据时会遇到编码问题。
现在我的问题是:“为什么?难道没有更简单的方法来 简单地 在 PowerShell 中设置字符编码吗?”
不幸的是,我自己没有找到任何关于设置字符编码的合理文档!
提前致谢
/编辑
第二条评论来自 TheIncorrigible1引导我找到了最远的最佳答案:Displaying Unicode in Powershell
- 因此,可以使用两个单独的语句将整个 PowerShell 设置为所需的编码 (UTF-8)。
PS C:\> $OutputEncoding = [System.Console]::OutputEncoding = [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8
PS C:\> $PSDefaultParameterValues['*:Encoding'] = 'utf8'
解释:
$OutputEncoding
设置编码,例如|
(管道)和/或程序和/或进程之间的通信。 [System.Console]::OutputEncoding
设置 STDOUT 和控制台/终端输出的编码。 [System.Console]::InputEncoding
设置 STDIN 或键盘输入的编码。 $PSDefaultParameterValues['*:Encoding']
为所有支持 -Encoding
的 cmdlet 设置编码选项,例如Out-File -Encoding
. 最佳答案
您可以使用 PowerShell 配置文件。 PowerShell 支持多个配置文件。此外,PowerShell 主机程序可以支持它们自己的特定于主机的配置文件。
例如,PowerShell 控制台支持以下基本配置文件。配置文件按优先顺序列出。第一个配置文件具有最高优先级。
THE PROFILE FILES
Description Path
All Users, All Hosts $PSHOME\Profile.ps1
All Users, Current Host $PSHOME\Microsoft.PowerShell_profile.ps1
Current User, All Hosts $Home\[My ]Documents\PowerShell\Profile.ps1
Current user, Current Host $Home\[My ]Documents\PowerShell\Microsoft.PowerShell_profile.ps1
配置文件路径包括以下变量:$PSHOME
变量,用于存储 PowerShell 的安装目录$Home
变量,存储当前用户的主目录从下面的文章,如果你想阅读更多关于这个,
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.1&viewFallbackFrom=powershell-7 .
关于windows - PowerShell session 中的字符编码 (UTF-8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51933189/