如何在PowerShell字符串文字中编码32位Unicode字符?

时间:2011-01-29 00:28:55

标签: unicode powershell

This Stack Overflow question处理16位Unicode字符。我想要一个支持32位字符的类似解决方案。见this link for a listing of the various Unicode charts。例如,32位的字符范围是Musical Symbols

上面链接的问题中的答案不起作用,因为它将System.Int32值转换为System.Char,这是一个16位类型。

编辑:让我澄清一点,我并不特别关心显示32位Unicode字符,我只想将字符存储在字符串变量中。

编辑#2:我编写了一个PowerShell代码段,它使用标记答案中的信息及其注释。我本想把它放在另一条评论中,但评论不能多行。

$inputValue = '1D11E'
$hexValue = [int]"0x$inputValue" - 0x10000
$highSurrogate = [int]($hexValue / 0x400) + 0xD800
$lowSurrogate = $hexValue % 0x400 + 0xDC00
$stringValue = [char]$highSurrogate + [char]$lowSurrogate

Dour High Arch仍然值得称赞,因为我帮助我最终理解代理对。

2 个答案:

答案 0 :(得分:4)

恕我直言,在PowerShell中使用Unicode文字的最优雅方式是

[char]::ConvertFromUtf32(0x1D11E)

有关详细信息,请参阅我的blogpos

答案 1 :(得分:2)

假设PowerShell使用UTF-16,32位代码点表示为surrogates。例如,U + 10000表示为:

0xD100 0xDC00

即两个16位字符;十六进制D100和DC00。

祝你好运找到代理字符的字体。