2016-11-03 11 views
0

다른 언어 문자로 구성된 16 진수 문자열이 있습니다. 이 16 진수 문자열을 유니 코드 텍스트로 변환하는 VB 스크립트 기능을 도와주세요.16 진수를 유니 코드로 변환하는 VBScript 함수

16 진수 문자열 "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 
+1

당신이 시도 무엇을 설치해야 [ mcve]를 공유 하시겠습니까? 이것이 도움이되지 않는다면 게시하기 전에 [ask]를 읽어주십시오. – Lankymart

+0

내 문제를 재현하는 샘플 코드로 내 질문을 편집했습니다. @Lankymart –

+0

문제는 각 Hex 값이 1 바이트를 나타내지 만 일부 문자는 2 바이트 이상으로 구성되어 문자가 일치하지 않는 이유입니다. 문자열에는 각 문자가 사용하는 바이트 수를 식별 할 수있는 방법이 없으므로 자동화 된 문자열 디코딩 방법을 찾지 못할 수 있습니다. – Lankymart

답변

0

사용 Mid() 16 진수 숫자 (문자열)로 입력 문자열을 잘라, 앞에 추가 & H 16 진수 리터럴을 얻기 위해, 그리고 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 
+0

품질이 좋지 않은 질문에 답하는 이유는 무엇입니까? 그들은 문제를 시도해 보았지만 답을 게시하는 것만으로도 더 많은 일을하도록 장려하는 예를 제공하지 않습니다 !! SO 커뮤니티를 돕지 않으면 방해가됩니다! – Lankymart

+0

[The Help Vampire Problem] (http://meta.stackexchange.com/a/19673/202529)에 추가하는 중입니다. – Lankymart

관련 문제