IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Encoder des chaînes en base64 pour POST?


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 123
    Points : 68
    Points
    68
    Par défaut Encoder des chaînes en base64 pour POST?
    Bonjour

    J'ai besoin d'envoyer des données à un script PHP via la méthode POST.

    Problème, on doit pouvoir utiliser tous les caractères autorisés, c.a.d. notamment les espaces, les signes accentués comme é, ç, etc.

    J'ai trouvé du code pour VB5/6 pour encoder une chaîne en base64, mais il ne gère pas les caractères accentués et utilise le caractère "=" qui est légal en base64, mais pas dans un formulaire web puisqu'il sert à indiquer la valeur d'une variable a=b.

    Quelqu'un connait un code source connu et validé pour faire ça et que je peux juste copier/coller dans un projet VB5/VB6, et éviter une dépendance?

    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Bonjour fredtheman

    Voici ce que je peux te proposer (je crois que ce code vient déjà de ce forum )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    Private Const mBASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
     
     
    Private Function Base64_Encode(ByVal Source As String) As String
      Dim C1                            As Integer
      Dim C2                            As Integer
      Dim C3                            As Integer
      Dim W1                            As Integer
      Dim W2                            As Integer
      Dim W3                            As Integer
      Dim W4                            As Integer
      Dim n                             As Long
      Dim Retry                         As String
     
      Dim Taille                        As Double
      Dim Pos                           As Long
      Dim Mime                          As String
     
      'Calcul la taille final de la chaine de caractères
      Taille = Len(Source) + (Len(Source) / 3)
      If Taille - Int(Taille) <> 0 Then Taille = Int(Taille) + 1
      Retry = String(Taille, 0)
      Pos = 1
     
      For n = 1 To Len(Source) Step 3
        C1 = Asc(mId$(Source, n, 1))
        C2 = Asc(mId$(Source, n + 1, 1) + Chr$(0))
        C3 = Asc(mId$(Source, n + 2, 1) + Chr$(0))
        W1 = Int(C1 / 4)
        W2 = (C1 And 3) * 16 + Int(C2 / 16)
        If Len(Source) >= n + 1 Then W3 = (C2 And 15) * 4 + Int(C3 / 64) Else W3 = -1
        If Len(Source) >= n + 2 Then W4 = C3 And 63 Else W4 = -1
     
        Mime = MimeEncode(W1) & MimeEncode(W2) & MimeEncode(W3) & MimeEncode(W4)
     
        Mid(Retry, Pos, Len(Mime)) = Mime
        Pos = Pos + Len(Mime)
      Next
      Base64_Encode = Retry
    End Function
     
    Private Function Base64_Decode(ByVal Source As String) As String
      Dim W1                            As Integer
      Dim W2                            As Integer
      Dim W3                            As Integer
      Dim W4                            As Integer
      Dim n                             As Long
      Dim Retry                         As String
      Dim Pos                           As Long
      Dim Taille                        As Double
     
      'Calcul la taille final de la chaine de caractères
      Taille = Int(Len(Source) * 0.75)
      Pos = 1
      Retry = String(Taille, 0)
     
      For n = 1 To Len(Source) Step 4
        W1 = MimeDecode(mId$(Source, n, 1))
        W2 = MimeDecode(mId$(Source, n + 1, 1))
        W3 = MimeDecode(mId$(Source, n + 2, 1))
        W4 = MimeDecode(mId$(Source, n + 3, 1))
        If W2 >= 0 Then
          Mid(Retry, Pos, 1) = Chr$(((W1 * 4 + Int(W2 / 16)) And 255))
          Pos = Pos + 1
        End If
     
        If W3 >= 0 Then
          Mid(Retry, Pos, 1) = Chr$(((W2 * 16 + Int(W3 / 4)) And 255))
          Pos = Pos + 1
        End If
     
        If W4 >= 0 Then
          Mid(Retry, Pos, 1) = Chr$(((W3 * 64 + W4) And 255))
          Pos = Pos + 1
        End If
      Next
      Base64_Decode = Retry
    End Function
     
    Private Function MimeEncode(ByVal w As Integer) As String
      If w >= 0 Then
        MimeEncode = mId$(mBASE64, w + 1, 1)
      Else
        MimeEncode = ""
      End If
    End Function
     
    Private Function MimeDecode(ByVal a As String) As Integer
      If Len(a) = 0 Then
        MimeDecode = -1
        Exit Function
      End If
      MimeDecode = InStr(mBASE64, a) - 1
    End Function
    Le plus difficile pour trouver une bonne réponse, c'est déjà de trouver la bonne question.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 123
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Najdar Voir le message
    Voici ce que je peux te proposer (je crois que ce code vient déjà de ce forum )
    Merci bp pour le code. Mais en fait, je me rends compte que ça n'est pas base64 qu'il faut utiliser, mais apparemment "url encoding", puisque seuls les caractères non-ASCII comme "é, ç," ou les espaces doivent être convertis en un équivalent ASCII.

    http://www.google.com/search?q=vb6+url+encoding

  4. #4
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function Escape(vString As String) As String
        Dim x As Long, cString As String
     
        For x = 1 To Len(vString)
            cString = Mid(vString, x, 1)
            Select Case Asc(cString)
                Case 32 To 47, 58 To 64, 91 To 96, 123 To 126
                    Escape = Escape + "%" + CStr(Hex(Asc(cString)))
                Case Else
                    Escape = Escape + cString
            End Select
        Next
     
    End Function

Discussions similaires

  1. [Batch] Fonctions utiles pour des chaînes de caractères
    Par I'm_HERE dans le forum Scripts/Batch
    Réponses: 17
    Dernier message: 24/08/2015, 15h42
  2. [ASTUCES] fonctions utiles pour des chaînes de caractères
    Par I'm_HERE dans le forum FAQs Windows
    Réponses: 1
    Dernier message: 13/04/2010, 11h34
  3. [AJAX] encodé des donnés envoyé par POST
    Par stc074 dans le forum AJAX
    Réponses: 2
    Dernier message: 19/07/2009, 18h00
  4. [BATCH]script pour encoder des fichiers dans une arborescence
    Par ashgan44 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 11/05/2009, 15h04
  5. Problème avec ffmpeg pour encoder des images Recherche :
    Par hppp01 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 15/12/2008, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo