Caractères accentués [Résolu]

Signaler
Messages postés
116
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
29 septembre 2013
-
Messages postés
292
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
22 février 2009
-
Bonsoir à tous,


J'ai un soucis lorsque je lis un fichier texte pour l'écrire dans une table Access. Les caractères accentués sont perdus et remplacés par autre chose, si bien que je me retrouve avec des inepties du genre 
    Ã‰gypte   au lieu de Égypte  (FR)
    Bélgica  au lieu de  Bélgica (ES)
    Färöer  au lieu de  Färöer  (DE)
Pourtant, lorsque j'ouvre le fichier avec Notepad, les accents sont bien là. A l'origine, il s'agissait d'un fichier .XML, que j'ai transformé en .TXT.  C'est peut-être à cause de ça que ça foire ?



<?xml version="1.0" encoding="UTF-8" ?>
<ordi:country>
  <ordi:code>125</ordi:code>
  <ordi:alpha2>JOB</ordi:alpha2>
  <ordi:alpha9>AFG175</ordi:alpha3>
  <ordi:name lang="fr">Ebéniste</ordi:name>
  <ordi:name lang="en">Cabinetmaker</ordi:name>
  <ordi:name lang="de">Tischler</ordi:name>
  <ordi:name lang="es">Ebanista</ordi:name>
  <ordi:name lang="it">Ebanista</ordi:name>
</ordi:country>
... etc ...


Si quelqu'un pouvait me donner une solution pour que ces données soient écrites correctement, ce
serait super sympa.
Je ne crois pas que le problème vienne du code, mais à tout hasard:



 While Not EOF(nFileIn)
    Line Input #nFileIn, cRecord
    ... etc ... 
 
    Rst.AddNew
           Rst!num1 = aTab(0)
           ... etc ...
    rst.Update
 Wend


Merci d'avance
Jessica

4 réponses

Messages postés
116
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
29 septembre 2013

Bonsoir,
Le problème vient effectivement de l'origine XML du fichier.Un caractère accentué est codé sur 2 bytes: ça se voit dès qu'on édite le fichier en hexa (ex: "é" est codé  C3A9).
Le premier de ces 2 caractères est toujours supérieur à Ascii 191.
Il suffit donc de créer une table de correspondance.
Chaque fois qu'on rencontre un caractère supérieur à 191 en lisant le fichier input, on remplace ce caractère et le suivant par son correspondant "correctement" accentué.
Exemple de table :
    Case "C3AB": cNewChar = "ë"
    Case "C3A8": cNewChar = "è"
    Case "C389": cNewChar = "É"
    Case "C3A9": cNewChar = "é"
Et c'est ainsi que "Algérie" deviendra "Algérie", et que "Alžírsko" deviendra "Alžírsko"  (Algérie en tchèque)
J'ai également constaté que le Notepad lit correctement ce genre de fichier: il reconnait les accents XML et les convertir en accents "normaux", tandis que Word et Wordpad ne le font pas.
Voilà, ça m'a valu toute une (très très longue)soirée de recherches sur le net. Cette réponse me satisfaisant pleinement, je vais me permettre d'accepter ma propre réponse
Jessica
Messages postés
292
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
22 février 2009

Bonjour

Je n'y connais rien a Access mais je sais que dans un fichier XML les accents et les caractères spéciaux sont remplacés par des mots clés, du genre "é" remplacé par "&#233;", peut-être que ton pb viens de là.

A+
Messages postés
116
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
29 septembre 2013

Même cette textbox ne reconnait pas tous les caractères accentués: il a mis un point d'interrogation, alors qu'il aurait du afficher z Accent circonlexe inversé
"Alžírsko" deviendra "Al?írsko"  (Algérie en tchèque)
Messages postés
292
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
22 février 2009

Je prends note ca peut servir!