windows - PowerShell session 中的字符编码 (UTF-8)

标签 windows postgresql powershell character-encoding

这个问题在这里已经有了答案:





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/

    相关文章:

    ruby-on-rails - 在 Rails 中按月和年分组

    ruby-on-rails - PG 数据库 :structure:load results in sh error

    powershell - 谁见过这个潜在的 powershell 对象属性被视为方法调用陷阱?

    azure - 是否可以使用 powershell 或任何编程语言获取日志分析工作区的摄取量?

    c++ - 反调试 - 用于 int 3 断点检测的计算函数内存占用

    windows - 如何禁用 Git 的 HTML 帮助(在 Windows 上)?

    c++ - Windows 上的直接文件系统函数调用

    postgresql - 在从数据库中创建临时表

    string - PowerShell - 用下划线连接两个字符串不起作用?

    windows - 操作系统/Windows 内部视频