My Name is Kay....

DIY , 먹방 , 개발 , 육아 , 여행 좋아합니다.
AdBlock 사용시 화면이 정상적으로 노출되지 않습니다.
포스팅 관련 문의 및 개발 문의는 Email : wkzkfmxksi@gmail.com

추가 포스팅이 이뤄지지 않는 블로그입니다. 문의는 wkzkfmxksi@gmail.com 으로 연락주세요.
2014.01.28 11:30

UTF-8 URLDecode 함수

kay
조회 수 3149 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

기존에 사용하던 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 •
?