【问题标题】:VBScript function to convert hex to unicodeVBScript 函数将十六进制转换为 unicode
【发布时间】:2016-11-03 10:34:16
【问题描述】:

我有由不同语言字母组成的十六进制字符串。 请帮助我使用 vb-script 函数将这个十六进制字符串转换为 Unicode 文本。

对于十六进制字符串 "506F7274756775C3AA73" ,我需要得到 "Português" 作为输出

我尝试了以下功能,它给出“Português”作为输出。

MsgBox ConvertHexToUnicode("506F7274756775C3AA73")



Function ConvertHexToUnicode(hexString)

Dim Strlen
Dim Charaset_array(20)
Dim i
Dim j
Strlen = Len(hexString)
i = 0
j = 1

Do
    Charaset_array(i) = Mid(hexString,j, 2) 

    i = i + 1
    j = j + 2


Loop While j < Strlen

ConvertHexToUnicode = ""

For Each chara In Charaset_array

If Not(IsEmpty(chara)) Then
    ConvertHexToUnicode = ConvertHexToUnicode + ChrW("&H" & chara )
End If
Next

End Function

【问题讨论】:

  • 您尝试过什么?您有minimal reproducible example 可以分享吗?如果这似乎没有帮助,请在发帖前阅读How to Ask
  • 我已使用可重现我的问题的示例代码编辑了我的问题。 @兰基玛特
  • 问题是每个十六进制值代表 1 个字节,但某些字符将由 2 个字节或更多字节组成,这就是字符不匹配的原因。因为字符串无法识别每个字符使用多少字节,所以您不太可能找到解码字符串的自动方法。

标签: unicode vbscript hex


【解决方案1】:

使用 Mid() 将您的输入字符串切割成十六进制数字(字符串),在 &H 前面添加十六进制文字,并使用 ChrW() 构建字符:

>> s = "00001F00"
>> WScript.Echo Mid(s, 5, 4)
>> WScript.Echo "&H" & Mid(s, 5, 4), CLng("&H" & Mid(s, 5, 4))
>> WScript.Echo ChrW("&H" & Mid(s, 5, 4)), AscW(ChrW("&H" & Mid(s, 5, 4)))
>>
1F00
&H1F00 7936
ἀ 7936

【讨论】:

  • 你为什么坚持回答质量差的问题?他们没有提供任何例子来表明他们甚至尝试过这个问题,但是您发布的答案只是鼓励更多人这样做!如果你不帮助 SO 社区,你就是在阻碍它!
  • 你只是添加到The Help Vampire Problem
  • 虽然这个问题可能很糟糕,但它的存在确实导致谷歌在我的搜索中将其显示为最高结果,这导致我得到了这个答案,它提供了足够的信息来帮助我解决我的问题。即使两者都不是超级强大。
猜你喜欢
  • 2021-04-30
  • 1970-01-01
  • 2020-02-06
  • 2012-07-29
  • 1970-01-01
  • 2020-05-19
  • 2012-10-28
  • 2015-01-26
相关资源
最近更新 更多