Winforms 运行时未正确显示表单字符-VS代码PowerShell
我正在用powershell制作表单应用程序。我在标签中正确显示字符“æ”、“ø”、“å”时遇到问题。请参见下面的屏幕抓图了解它们的显示方式。似乎存在某种类型的编码问题,而且由于Powershell在内存中将字符保存为utf-16,我猜问题出在我使用的Winforms 运行时未正确显示表单字符-VS代码PowerShell,winforms,powershell,visual-studio-code,Winforms,Powershell,Visual Studio Code,我正在用powershell制作表单应用程序。我在标签中正确显示字符“æ”、“ø”、“å”时遇到问题。请参见下面的屏幕抓图了解它们的显示方式。似乎存在某种类型的编码问题,而且由于Powershell在内存中将字符保存为utf-16,我猜问题出在我使用的System.Windows.Forms.Label上 Add-Type -AssemblyName System.Windows.Forms $Form = New-Object system.Windows.Forms.Form $Form.W
System.Windows.Forms.Label
上
Add-Type -AssemblyName System.Windows.Forms
$Form = New-Object system.Windows.Forms.Form
$Form.Width = 800
$Form.Height = 500
$Form.BackColor = "#dff3ee" #"#00554b"
$Form.AutoSize = $false
$Form.StartPosition = "CenterScreen"
$Info= New-Object System.Windows.Forms.Label
$Info.Width = 250
$Info.Height = 70
$Info.AutoSize = $false
$Info.Location = New-Object System.Drawing.Point(20,20)
$Info.Font = "Arial Unicode MS, 9"
$Info.Text = "Why is this æ ø å displayed wrong"
$Form.Controls.AddRange(@($Info))
$Form.ShowDialog()
$pVersionTable
Name Value
---- -----
PSVersion 5.1.18362.145
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.18362.145
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
我无法解决这个问题。但是我正在用PS2EXE将其打包到一个.exe中,然后字符将正确显示。因为它在prod中是正确的,所以我不再为此费心了。当我在Windows PowerShell ISE中粘贴代码并保存它时,它会按预期工作,但当我在VS code中粘贴代码并保存它时,在运行时它不会正确显示这些字符 这取决于保存文件的工具。如果使用Windows PowerShell ISE,则会使用带BOM的UTF-8(或带签名的UTF-8)保存文件,但当使用VS代码时,默认设置是使用带BOM的UTF-8(或不带BOM的UTF-8,或不带签名的UTF-8)保存文件 因此,区别在于文件编码,或者更准确地说,是有还是没有 要修复VS代码中的问题,请执行以下操作:
- 开放VS代码
- 在状态栏的右侧,单击“编码”。(默认为UTF-8)
- 在顶部打开的菜单中,选择“使用编码保存”
- 从下一个菜单中,选择UTF-8和BOM