mrk*_*nck 10 windows postgresql powershell character-encoding
大家好,
作为控制台/终端爱好者和数据库管理员 (PostgreSQL),使用正确的字符编码对我来说至关重要。因此,我希望我的客户端控制台/终端窗口始终设置为例如 UTF-8。
回到 Windows 的 CMD.EXE,这个尝试就像输入命令chcp 65001
来设置所需的代码页标识符一样简单。现在,我正在切换到 PowerShell 并且设置字符编码似乎很奇怪,恕我直言。
我已经对如何将 PowerShell 会话设置为 UTF-8 进行了一些研究,我发现我需要三个步骤/命令来完成它。
PS C:\> $OutputEncoding = [System.Text.Encoding]::UTF8
PS C:\> [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
PS C:\> chcp 65001
Run Code Online (Sandbox Code Playgroud)
尽管前两个命令不直观且难以记住...遗漏其中一个命令会导致无法正常工作!此外,仅设置其中一个似乎对其他人没有影响。
因此,我必须设置所有三个以使用 PostgreSQL 的psql
数据库客户端。否则我在导出/导入数据时会遇到编码问题。
现在我的问题是:“为什么?难道没有更简单的方法可以在 PowerShell 中简单地设置字符编码吗?” 不幸的是,我自己没有找到任何关于设置字符编码的合理文档!
提前致谢
TheIncorrigible1的第二条评论让我得到了迄今为止最好的答案:在 Powershell 中显示 Unicode - 因此可以将整个 PowerShell 与两个单独的语句设置为所需的编码 (UTF-8)。
PS C:\> $OutputEncoding = [System.Console]::OutputEncoding = [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8
PS C:\> $PSDefaultParameterValues['*:Encoding'] = 'utf8'
Run Code Online (Sandbox Code Playgroud)
$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
Run Code Online (Sandbox Code Playgroud)
配置文件路径包括以下变量:
该$PSHOME
变量,存储 PowerShell 的安装目录
该$Home
变量,存储当前用户的主目录
从下面的文章中,如果您想了解更多相关信息,请访问
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.1&viewFallbackFrom=powershell -7。
归档时间: |
|
查看次数: |
11595 次 |
最近记录: |