1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 9
    Points : 10
    Points
    10

    Par défaut Nettoyage des chaînes de caractères en ASP

    Bonjour,

    J'ai une chaîne de caractères saisies dans une base de données. Je souhaite remplacer tous les caractères que ne sont pas des lettres (non accentuées) ou des chiffres par un "tiret" afin de nettoyer ces caractères.
    Aujourd'hui, je sais remplacer des accents par leur équivalent en lettre (ex. é en e), mais je ne sais pas remplacer des caractères bizarres en "tiret" (exemple de chaîne : "Analyse facture Funecap 1 Premie��re page").

    Je travaille en ASP (pas en .Net) et VBScript.

    Merci de votre aide

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    janvier 2011
    Messages
    11 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2011
    Messages : 11 699
    Points : 24 980
    Points
    24 980

    Par défaut

    Bonjour,
    si tu as un problème d'encodage autant le régler
    Passez à l'UTF-8 sans manquer une étape

    Si non teste la valeur "ascii" des caractères de ta chaine et agis en conséquence.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 9
    Points : 10
    Points
    10

    Par défaut

    Bonjour,

    Merci de ton aide, mais ma page est en ASP (VBScript) et non PHP, donc le tuto ne me sert pas à grand chose.
    Sinon, je cherche une méthode ou un code à incorporer. Je peux effectivement tester les codes Ascii mais c'est fastidieux, il y en a 256.
    Je préfèrerais une méthode qui consisterait à dire "tous les caractères qui ne sont pas des lettres de "A à Z" ou de "a à z" et des chiffres de "0 à 9" sont remplacés par des "tirets".

    Comment je fais pour faire ça ?

    Merci

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    janvier 2011
    Messages
    11 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2011
    Messages : 11 699
    Points : 24 980
    Points
    24 980

    Par défaut

    Pour ton cas cela vaut surtout pour la façon de gérer les fichiers à l'enregistrement.
    Concernant le remplacement des caractères as tu regardé du coté des regExp ? (cela doit bien exister même en ASP)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : juin 2006
    Messages : 83
    Points : 121
    Points
    121

    Par défaut

    Bonjour,
    Il y a plusieurs niveaux à considérer :
    1) ces caractères sont-ils en clair dans la BD ? --> c'est pas sun problème ASP mais BD
    2) les pages d'affichages sont-elles déclarées dans le même encodage que la BD ? (UTF-8 ?)
    3) l'accès à la base se fait probablement via ODBC : est-il lui-même défini avec le bon encodage ?
    4) le fonction ASP server.htmlencode a-t-elle été testée ?
    5) voici quelques fonctions ASP autour du codage des caractères, trouvées sur le web : il faut savoir chercher un peu...

    Pour répondre au problème indiqué (usage des RegExp) : ça tiens si il n'y a pas d'incoherence d'encodage...

    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
    Function epure(st)
         st = lcase(st)
         set regex = new regexp
         regex.ignorecase = true
         regex.global = true
         regex.pattern = "[àâä]"
         st = regex.replace(st,"a")
         regex.pattern = "[îï]"
         st = regex.replace(st,"i")
         regex.pattern = "[ôö]"
         st = regex.replace(st,"o")
         regex.pattern = "[ùûü]"
         st = regex.replace(st,"u")
         regex.pattern = "[éèêëÉ]"
         st = regex.replace(st,"e")
         regex.pattern = "[ç]"
         st = regex.replace(st,"c")
         epure = st
    End Function
    D'autres fonctions à tester...

    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
    'DecodeUTF8
    '  Decodes a UTF-8 string to the Windows character set
    '  Non-convertable characters are replace by an upside
    '  down question mark.
    'Returns:
    '  A Windows string
    function DecodeUTF8(s)
      dim i
      dim c
      dim n
     
      i = 1
      do while i <= len(s)
        c = asc(mid(s,i,1))
        if c and &H80 then
          n = 1
          do while i + n <= len(s)
            if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then
              exit do
            end if
            n = n + 1
          loop
          if n = 2 and ((c and &HE0) = &HC0) then
            c = asc(mid(s,i+1,1)) + &H40 * (c and &H01)
          else
            c = 191 
          end if
          s = left(s,i-1) + chr(c) + mid(s,i+n)
        end if
        i = i + 1
      loop
      DecodeUTF8 = s 
    end function
    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
     
    'EncodeUTF8
    '  Encodes a Windows string in UTF-8
    'Returns:
    '  A UTF-8 encoded string
    function EncodeUTF8(s)
      dim i
      dim c
     
      i = 1
      do while i <= len(s)
        c = asc(mid(s,i,1))
        if c >= &H80 then
          s = left(s,i-1) + chr(&HC2 + ((c and &H40) / &H40)) + chr(c and &HBF) + mid(s,i+1)
          i = i + 1
        end if
        i = i + 1
      loop
      EncodeUTF8 = s 
    end function
    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
    Function Utf8ToUnicode(strText)
       With CreateObject("ADODB.Stream")
     
          .Open
          .Charset = "Windows-1252"
     
          .WriteText strText
     
          .Position = 0
          .Type = 2 ' adTypeText
          .Charset = "utf-8"
     
          Utf8ToUnicode = .ReadText(-1) 'adReadAll
     
          .Close
       End With
    End Function

Discussions similaires

  1. [VBS]Gestion des chaînes de caractères
    Par Edoxituz dans le forum VBScript
    Réponses: 11
    Dernier message: 29/01/2006, 17h07
  2. Gestion des chaînes de caractères
    Par Furius dans le forum VBScript
    Réponses: 5
    Dernier message: 06/01/2006, 15h01
  3. Problème sur des chaînes de caractères
    Par Anonymous dans le forum Access
    Réponses: 9
    Dernier message: 16/09/2005, 08h21
  4. Passage des chaînes de caractères à une application CGI
    Par Thom@s dans le forum Composants VCL
    Réponses: 10
    Dernier message: 03/12/2004, 00h13

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