PowerShell 5.1.2中WinForms无法显示Unicode船舶图标问题
解决PowerShell 5.1 WinForms按钮无法显示Unicode U+1F6F3船舶图标的问题
问题核心是WinForms按钮默认字体不支持U+1F6F3这类Emoji字符。U+1F6F3属于Unicode补充平面的Emoji符号,而WinForms按钮默认使用的字体(如Microsoft Sans Serif)未包含该类字符的字形,因此显示方块占位符。
解决方案:更换按钮字体为支持Emoji的字体
Windows系统自带的Segoe UI Emoji原生支持绝大多数Emoji字符,给按钮指定该字体即可正常显示目标图标:
Add-Type -AssemblyName System.Windows.Forms $form = New-Object System.Windows.Forms.Form $button = New-Object System.Windows.Forms.Button # 设置支持Emoji的字体及字号 $button.Font = New-Object System.Drawing.Font("Segoe UI Emoji", 16, [System.Drawing.FontStyle]::Regular) $button.Text = [char]::ConvertFromUtf32(0x0001F6F3) $form.AcceptButton = $button $form.Controls.Add($button) $form.TopMost = $true $result = $form.ShowDialog() if ($result -eq [System.Windows.Forms.DialogResult]::OK) { #... }
补充说明
- 若系统无
Segoe UI Emoji,可尝试Segoe UI Symbol字体(部分Emoji显示效果可能略差)。 - PowerShell 5.1本身对Unicode补充平面字符的处理无问题,并非WinForms的Unicode编码故障,仅需解决控件字体的支持性即可。
内容的提问来源于stack exchange,提问作者Bowen
相关产品推荐
相关产品推荐

