Transformer du texte en UTF-8 avec VB6 [Résolu]

Messages postés
309
Date d'inscription
vendredi 9 janvier 2004
Dernière intervention
5 mars 2009
- - Dernière réponse : cs_jeanmi45
Messages postés
27
Date d'inscription
mercredi 31 mars 2004
Dernière intervention
6 avril 2010
- 28 mai 2009 à 10:35
bonjour
en fait, je voudrais tranformer du texte en UTF-8 pour l'envoyer comme parametre à un exe qui ne prend que de l'UTF-8 ... c'sst possible de le faire en VB6 ?

Afficher la suite 

11 réponses

Messages postés
662
Date d'inscription
mercredi 16 janvier 2002
Dernière intervention
16 octobre 2010
0
Merci
Voici le code d'un module ....

Option Explicit

Private 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
Private Declare Function WideCharToMultiByte Lib "Kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long

Private Const CP_ACP = 0
Private Const CP_UTF8 = 65001

Public Function UTF8_Encode(ByVal Text As String) As String

Dim sBuffer As String
Dim lLength As Long

lLength = WideCharToMultiByte(CP_UTF8, 0, StrPtr(Text), -1, 0, 0, 0, 0)
sBuffer = Space$(lLength)
lLength = WideCharToMultiByte(CP_UTF8, 0, StrPtr(Text), -1, StrPtr(sBuffer), Len(sBuffer), 0, 0)
sBuffer = StrConv(sBuffer, vbUnicode)
UTF8_Encode = Left$(sBuffer, lLength - 1)

End Function

Public Function UTF8_Decode(ByVal Text As String) As String

Dim lLength As Long
Dim sBuffer As String

Text = StrConv(Text, vbFromUnicode)
lLength = MultiByteToWideChar(CP_UTF8, 0, StrPtr(Text), -1, 0, 0)
sBuffer = Space$(lLength)
lLength = MultiByteToWideChar(CP_UTF8, 0, StrPtr(Text), -1, StrPtr(sBuffer), Len(sBuffer))
UTF8_Decode = Left$(sBuffer, lLength - 1)

End Function
Messages postés
309
Date d'inscription
vendredi 9 janvier 2004
Dernière intervention
5 mars 2009
0
Merci
aya, trop merci, tu m'as enlevé une fiere chandelle du pied là !!! :D

Messages postés
7
Date d'inscription
lundi 20 janvier 2003
Dernière intervention
8 décembre 2004
0
Merci
Bonjour,

je soushaite faire a peu pres la meme chose car j'aimerai convertir un fichier codé en ASCII en UTF-8.

J'y arrive mais la conversion m'ecrit des " (guillemets) au début et a la fin de la chaine de caractere que je transforme.

Help please.
MiKL
Messages postés
4
Date d'inscription
jeudi 12 juin 2003
Dernière intervention
16 juin 2010
0
Merci
Merci , ca m'a vraimen aidé !
Messages postés
91
Date d'inscription
dimanche 18 août 2002
Dernière intervention
21 février 2015
0
Merci
Bien joué !
Dommage que l'API-Guide ne documente pas ça
Messages postés
91
Date d'inscription
dimanche 18 août 2002
Dernière intervention
21 février 2015
0
Merci
JoBleu
Messages postés
1
Date d'inscription
vendredi 3 janvier 2003
Dernière intervention
23 novembre 2005
0
Merci
FredLynx,



Alors là, bravo... Chapeau bas, et tout et tout, et si votre ramage se
rapporte à votre programmage, vous êtes le phoenix de ce forum !



Merci encore,



Cordialement,



Manureva
Messages postés
208
Date d'inscription
mercredi 22 janvier 2003
Dernière intervention
2 décembre 2008
0
Merci
c'est bon je suis calmé
Messages postés
29
Date d'inscription
mardi 4 novembre 2003
Dernière intervention
20 mars 2006
0
Merci
Merci pour ce code qui me solutionne bien des problèmes.

Une question sur le sujet :
Comment savoir si une chaine est codée en UTF 8 ?

Cordialement
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Dernière intervention
16 mai 2011
0
Merci
Code très intéressant.

Je suis un peu newbie et j'aurais besoin d'encoder des fichiers txt en UTF-8 via une macro Excel que voici....

Comment utiliser la fonction ci-dessus dans mon cas ? Merci par avance pour tout aide...


  Dim Var As Range

  On Error Resume Next

  Set Var = Range("$A$1:$A$8")

  If Var Is Nothing Then Exit Sub

   

     On Error Resume Next

     strPath = "C:\temp"

     x = GetAttr(strPath) And 0

     If Err <> 0 Then

         MkDir strPath

     End If

  Dossier = "C:\temp"

  FichierTXT = Dossier & "monfichier.txt"


  NbColonne = Var.Columns.Count

  NbLigne = Var.Rows.Count

  CalcState = Application.Calculation

  StatusBarState = Application.DisplayStatusBar

  Application.Calculation = xlManual


  Application.StatusBar = "Patientez SVP...création du fichier"

  If Len(dir(FichierTXT)) > 1 Then Kill FichierTXT

  'Supprime le fichier s'il existe déjà

  Open FichierTXT For Output As 1

  'création du fichier texte

 

  aRow = 0

  While aRow < NbLigne

 

    aRow = aRow + 1

    DoEvents

    Application.StatusBar = Str$(Int((aRow / NbLigne) * 100)) & "% achevé"

    If (Not Var.Rows(aRow).Hidden) Then

      MV = ""

      aCol = 0

      While aCol < NbColonne

        aCol = aCol + 1

        If (Not Var.Columns(aCol).Hidden) Then

          CellV = Var.Cells(aRow, aCol).Text

        End If

        If aCol < NbColonne Then

          MV = MV & CellV & "" ' emplacement du délimiteur ici : rien

        Else: MV = MV & CellV

        End If

      Wend

      Print #1, MV

    End If

  Wend

  Close

  DoEvents

 

  Application.Calculation = CalcState

  Application.StatusBar = ""

  Application.DisplayStatusBar = StatusBarState

  Application.DisplayAlerts = False

  ActiveWorkbook.Close


End If

Next
Messages postés
27
Date d'inscription
mercredi 31 mars 2004
Dernière intervention
6 avril 2010
0
Merci
bravo pour le code, je vois sur le site pas mal de gars qui galère avec ça et qui trouve des parades pas terrible (du tout!) avec FM20.dll....un GRAND MERCI

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.