不是在.net中. 哪位大虾能给出互相转换的代码? 谢了..

解决方案 »

  1.   

    引用Microsoft Script Control Function Escape1(sIn As String, Optional fReverse As Boolean = False) As String
        Dim oSC As New ScriptControl
        With oSC
            .language = "JScript"
            If fReverse Then
                Escape1 = .Eval("decodeURI(""" & sIn & """)")
            Else
                Escape1 = .Eval("encodeURI(""" & sIn & """)")
            End If
        End With
    End Function
      

  2.   

    楼上的写的是什么?  Dim oSC As New ScriptControl 能在vb里用吗?
      

  3.   

    输入
    debug.print escape1("十分之后")显示
    "%e5%8d%81%e5%88%86%e4%b9%8b%e5%90%8e"
      

  4.   

    Private Sub Form_Load()
        Debug.Print Escape1("十分之后")
        Debug.Print Escape1("%E5%8D%81%E5%88%86%E4%B9%8B%E5%90%8E", True)
    End Sub
    Function Escape1(sIn As String, Optional fReverse As Boolean = False) As String
        Dim oSC As New ScriptControl
        With oSC
            .language = "JScript"
            If fReverse Then
                Escape1 = .Eval("decodeURI(""" & sIn & """)")
            Else
                Escape1 = .Eval("encodeURI(""" & sIn & """)")
            End If
        End With
    End Function
      

  5.   

    想了一下,还可以这样
    Public Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
    Public Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
    Public Const CP_UTF8 = 65001Public Function EncodeURI(ByVal s As String) As String
        Dim i As Long
        Dim lLength As Long
        Dim lBufferSize As Long
        Dim lResult As Long
        Dim abUTF8() As Byte
        
        EncodeURI = ""
        lLength = Len(s)
        If lLength = 0 Then Exit Function    
        lBufferSize = lLength * 3 + 1
        ReDim abUTF8(lBufferSize - 1)
        
        lResult = WideCharToMultiByte(CP_UTF8, 0, StrPtr(s), lLength, abUTF8(0), lBufferSize, vbNullString, 0)
        
        If lResult <> 0 Then
            lResult = lResult - 1
            ReDim Preserve abUTF8(lResult)
            For i = LBound(abUTF8) To UBound(abUTF8)
                EncodeURI = EncodeURI & "%" & Hex(abUTF8(i))
            Next
        End If
    End FunctionPublic Function DecodeURI(ByVal s As String) As String
        On Error Resume Next
        Dim lRet As Long
        Dim lLength As Long
        Dim lBufferSize As Long
        Dim abUTF8() As Byte
        
        Dim i As Long
        Dim v As Variant
        v = Split(s, "%")
            
        lLength = UBound(v)
        
        If lLength <= 0 Then Exit Function
        
        ReDim abUTF8(lLength - 1)
        
        For i = 0 To lLength - 1
            abUTF8(i) = CByte("&H" & v(i + 1))
        Next
        
        lBufferSize = lLength * 2
        
        DecodeURI = String$(lBufferSize, Chr(0))
        
        lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(abUTF8(0)), lLength, StrPtr(DecodeURI), lBufferSize)
        
        If lRet <> 0 Then
            DecodeURI = Left(DecodeURI, lRet)
        End If
    End Function