在VbScript中使用ChrW(65535)以外的字符值

时间:2017-04-06 02:45:07

标签: vbscript

VBScript有没有办法支持将十六进制转换为十进制到超出ChrW(65535)范围的char?

例如,\u2122h&2122(十六进制),并转换为十进制值8482,使用ChrW打印

Response.Write ChrW(cLng("&h2122"))

结果:

......到目前为止一切都很好。

有超出ChrW范围的字符,例如“G clef”字符U+1D11E(utf-16)映射到十进制119,070,超出ChrW()的范围

有没有办法在VBScript中使用那些较高的字符?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用该字符的utf16-le(或utf16-be)编码的代理对编码值,并将它们分配给两个单独的chrW调用并合并结果。

Dim tmChar
tmChar = ChrW(&HD834) & ChrW(&HDD1E)
' You will probably see just a square or a question mark or some place holder here, depending on system and font support
MSGBox("Wow: " & tmChar)
'Have also a thinking face emoji as an additional example
tmChar = ChrW(&HD83E) & ChrW(&HDD14)
MSGBox("Hummm... " & tmChar)

我认为vbs字符串存储utf16-le“单位”,而不是字符或代码点。

请注意:   “ G clef”是与代码点编号119070(十六进制的1D11E)相对应的Unicode字符。   “ G谱号”是U + 1D11E Unicode stop   作为代理对单位的“ G谱号”为0xD834 0xDD1E   编码为UTF16-BE的“ G谱号”为0xD8 0x34 0xDD 0x1E   编码为UTF16-LE的“ G谱号”为0x34 0xD8 0x1E 0xDD