none
encodage du caractère & pour une URL distante RRS feed

  • Question

  • Bonjour

    J'ai beau cherché, je n'arrive pas à encoder le caractère '&' depuis VB6 pour une url distante.

    Si je remplace le caractère '&' par '&' ca passe pour l'url mais pas dans mon fichier xml ou inversement.

    Pouvez-vous me dire comment palier à ce problème SVP ? Merci par avance

    Cdlmt,

    lundi 10 janvier 2011 11:33

Réponses

  • Bonjour,

    Pour l'URL, il existe des méthodes URLEncode et URLDecode un peu partout sur le web, cela donne quelque chose comme cela :

     

    Public Function URLEncode(StringToEncode As String, Optional _
      UsePlusRatherThanHexForSpace As Boolean = False) As String
    
    Dim TempAns As String
    Dim CurChr As Integer
    CurChr = 1
    Do Until CurChr - 1 = Len(StringToEncode)
     Select Case Asc(Mid(StringToEncode, CurChr, 1))
      Case 48 To 57, 65 To 90, 97 To 122
       TempAns = TempAns & Mid(StringToEncode, CurChr, 1)
      Case 32
       If UsePlusRatherThanHexForSpace = True Then
        TempAns = TempAns & "+"
       Else
        TempAns = TempAns & "%" & Hex(32)
       End If
      Case Else
         TempAns = TempAns & "%" & _
           Format(Hex(Asc(Mid(StringToEncode, _
           CurChr, 1))), "00")
    End Select
    
     CurChr = CurChr + 1
    Loop
    
    URLEncode = TempAns
    End Function
    
    
    Public Function URLDecode(StringToDecode As String) As String
    
    Dim TempAns As String
    Dim CurChr As Integer
    
    CurChr = 1
    
    Do Until CurChr - 1 = Len(StringToDecode)
     Select Case Mid(StringToDecode, CurChr, 1)
      Case "+"
       TempAns = TempAns & " "
      Case "%"
       TempAns = TempAns & Chr(Val("&h" & _
         Mid(StringToDecode, CurChr + 1, 2)))
        CurChr = CurChr + 2
      Case Else
       TempAns = TempAns & Mid(StringToDecode, CurChr, 1)
     End Select
    
    CurChr = CurChr + 1
    Loop
    
    URLDecode = TempAns
    End Function
    

     

     

    Pour le XML, tu peux te baser sur des fonctions d'encodage ou de décodage trouvées par exemple ici : http://www.vb-helper.com/howto_html_encode_decode.html

    Public Function HTMLToCharCodes(ByVal iString As String) As _
      String
      With New MSXML2.DOMDocument30
        .loadXML "<p>" & iString & "</p>"
        HTMLToCharCodes = _
          .selectSingleNode("p").nodeTypedValue
      End With
    End Function
    
    Public Function CharCodesToHTML(ByVal iString As String) As _
      String
    Dim iXml As New MSXML2.DOMDocument30
    
      With iXml.createTextNode(iString)
        CharCodesToHTML = .xml
      End With
    End Function
    

    Cordialement,

    Thomas

     

     

     

     


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse Dchrist54 mardi 11 janvier 2011 09:08
    mardi 11 janvier 2011 07:52

Toutes les réponses

  • Bonjour,

    Je comprend pas trop ce que vous voulez (Depuis vb6 ?)

    Si vous cherchez a remplacé le symbole "&" qui ce trouve dans une URL il faut utiliser la fonction "Replace" de votre chaine (replace existe aussi sous vb6)

    Par exemple

    Dim toto As String = http://test.com/toto&test
    toto = toto.replace("&", "=")

    Vous parlez aussi de XML vous n'arriver pas a écrire le symbole "&" dans un fichier XML ?

     

    A bientot

     


    Cordialement, Troxsa
    lundi 10 janvier 2011 13:24
    Auteur de réponse
  • Bonjour,

    Pour l'URL, il existe des méthodes URLEncode et URLDecode un peu partout sur le web, cela donne quelque chose comme cela :

     

    Public Function URLEncode(StringToEncode As String, Optional _
      UsePlusRatherThanHexForSpace As Boolean = False) As String
    
    Dim TempAns As String
    Dim CurChr As Integer
    CurChr = 1
    Do Until CurChr - 1 = Len(StringToEncode)
     Select Case Asc(Mid(StringToEncode, CurChr, 1))
      Case 48 To 57, 65 To 90, 97 To 122
       TempAns = TempAns & Mid(StringToEncode, CurChr, 1)
      Case 32
       If UsePlusRatherThanHexForSpace = True Then
        TempAns = TempAns & "+"
       Else
        TempAns = TempAns & "%" & Hex(32)
       End If
      Case Else
         TempAns = TempAns & "%" & _
           Format(Hex(Asc(Mid(StringToEncode, _
           CurChr, 1))), "00")
    End Select
    
     CurChr = CurChr + 1
    Loop
    
    URLEncode = TempAns
    End Function
    
    
    Public Function URLDecode(StringToDecode As String) As String
    
    Dim TempAns As String
    Dim CurChr As Integer
    
    CurChr = 1
    
    Do Until CurChr - 1 = Len(StringToDecode)
     Select Case Mid(StringToDecode, CurChr, 1)
      Case "+"
       TempAns = TempAns & " "
      Case "%"
       TempAns = TempAns & Chr(Val("&h" & _
         Mid(StringToDecode, CurChr + 1, 2)))
        CurChr = CurChr + 2
      Case Else
       TempAns = TempAns & Mid(StringToDecode, CurChr, 1)
     End Select
    
    CurChr = CurChr + 1
    Loop
    
    URLDecode = TempAns
    End Function
    

     

     

    Pour le XML, tu peux te baser sur des fonctions d'encodage ou de décodage trouvées par exemple ici : http://www.vb-helper.com/howto_html_encode_decode.html

    Public Function HTMLToCharCodes(ByVal iString As String) As _
      String
      With New MSXML2.DOMDocument30
        .loadXML "<p>" & iString & "</p>"
        HTMLToCharCodes = _
          .selectSingleNode("p").nodeTypedValue
      End With
    End Function
    
    Public Function CharCodesToHTML(ByVal iString As String) As _
      String
    Dim iXml As New MSXML2.DOMDocument30
    
      With iXml.createTextNode(iString)
        CharCodesToHTML = .xml
      End With
    End Function
    

    Cordialement,

    Thomas

     

     

     

     


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse Dchrist54 mardi 11 janvier 2011 09:08
    mardi 11 janvier 2011 07:52