UTF-8 URLDecode 함수

by kay posted Jan 28, 2014
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

기존에 사용하던 URLDECODE 함수가

특수문자 또는 한자 , 일부 외국어 등 UTF-8 문자열에서 제대로 DECODE 되지 않는 문제가 있어서

찾아보았더니 문자셋 문제였습니다.


글쓴분은 이미 100년전에 찾으신듯한데

호갱 개발자 반성해봅니다.. 


Function UrlDecode_GBToUtf8(ByVal str) 
    Dim B,ub    ''中文字的Unicode码(2字节) 
    Dim UtfB    ''Utf-8单个字节 
    Dim UtfB1, UtfB2, UtfB3 ''Utf-8码的三个字节 
    Dim i, n, s 
    n=0 
    ub=0 
    For i = 1 To Len(str) 
        B=Mid(str, i, 1) 
        Select Case B 
            Case "+" 
                s=s & " " 
            Case "%" 
                ub=Mid(str, i + 1, 2) 
                UtfB = CInt("&H" & ub) 
                If UtfB<128 Then 
                    i=i+2 
                    s=s & ChrW(UtfB) 
                Else 
                    UtfB1=(UtfB And &H0F) * &H1000    ''取第1个Utf-8字节的二进制后4位 
                    UtfB2=(CInt("&H" & Mid(str, i + 4, 2)) And &H3F) * &H40        ''取第2个Utf-8字节的二进制后6位 
                    UtfB3=CInt("&H" & Mid(str, i + 7, 2)) And &H3F        ''取第3个Utf-8字节的二进制后6位 
                    s=s & ChrW(UtfB1 Or UtfB2 Or UtfB3) 
                    i=i+8 
                End If 
            Case Else    ''Ascii码 
                s=s & B 
        End Select 
    Next 
    UrlDecode_GBToUtf8 = s 
End Function



참고 Url : 

http://blog.daum.net/bomdol/16137019

http://www.cftea.com/c/2009/10/OOXX97QIONHANAF9.asp

TAG •