본문 바로가기

Program & etc/Visual Basic

[Visual Basic] 문자열 유니코드 변경

문자열 유니코드 변경

 

StrToUni 함수 : 문자열을 유니코드로 변경

 

UniToStr 함수 : 유니코드를 문자열로 변경

 

Private Function StrToUni(Text As String) As String

Dim a As String, b As String, C As String, i As Integer '변수선언

For i = 1 To Len(Text)
    '영문과 한글 변환 설정
    If Len(Hex(AscW(Mid(Text, i, 1)))) = 2 Then '숫자, 영문이 들어올때
        StrToUni = StrToUni + Hex(AscW(Mid(Text, i, 1))) + "00"
    Else
        If Len(Hex(AscW(Mid(Text, i, 1)))) = 1 Then
            StrToUni = StrToUni + "000" + Hex(AscW(Mid(Text, i, 1)))
        Else
            '리턴값 처리
            If Mid(Text, i, 1) = vbLf Then
                StrToUni = Left(StrToUni, Len(StrToUni) - 1)
                StrToUni = StrToUni + "0A0D"
            Else
                StrToUni = StrToUni + Hex(AscW(Mid(Text, i, 1))) '///한글이 들어올때
            End If
        End If
    End If
Next i

For i = 1 To Len(StrToUni) Step 4
    a = Mid(StrToUni, i, 2)
    b = Mid(StrToUni, i + 2, 2)
    C = C + b + a
Next i

StrToUni = C

End Function

--------------------------------------------------------------------------------------------------------

Private Function UniToStr(Text As String) As String
   Dim i As Integer
   Dim a As String, b As String, C As String
  
   Text = Trim(Text)
  
   For i = 1 To Len(Text) Step 4
      '리턴값 처리
      If Mid(Text, i, 4) = "0D0A" Then
         UniToStr = UniToStr + vbCrLf
         C = C + "0000"
      Else
         '순서변경
         a = Mid(Text, i, 2)
         b = Mid(Text, i + 2, 2)
         '영문/기타 문자일 경우, 다시 변경
         If a = "00" Then
            C = C + Mid(Text, i, 4)
            '특수경우 제외
            Select Case LCase(ChrW(Val("&H" & Mid(C, i, 4))))
               Case "a" To "z", 0 To 9, "-", "_", "=", "+", "\", "|", "[", "]", "{", "}", "<", ">", ",", ".", "/", "?", "~", "!", "@", "$", "#", "%", "^", "&", "*", "(", ")", ":", ";", "'", """", " "
               Case Else
                   C = Left(C, Len(C) - 4) + b + a
            End Select
         Else
            C = C + b + a
         End If
         '"저", "팀" 변환문제 해결
         Select Case a + b
            Case "00C8"
               UniToStr = UniToStr + "저"
            Case "00D3"
               UniToStr = UniToStr + "팀"
            Case Else
               UniToStr = UniToStr + ChrW(Val("&H" & Mid(C, i, 4)))
         End Select  
      End If
   Next i

End Function