Yep à tous,
Je vous explique mon pb :
Mon serveur récupère à heure fixe un flux XML, il le parse et le rentre dans une base de donnée.
Le problème est qu'il me foire tout les accents, par exemple :
Combiné devient Combiné
J'ai donc fait un petit fichier de règle avec sed pour lire le flux et virer tout les accents afin de les coder en HTML, pour obtenir :
Combiné devient Combiné
Mais sa ne marche pas, voila a la suite du sed ce que j'ai dans ma base : Combinéeacute;
Arf....
Donc je vous joins mon fichier de règles sed, dites moi comment faire soit pour faire marcher sed, ou tout simplement pour résoudre mon problème!
Merci d'avance à tous.
Fichier de régle sed :
#!/usr/bin/sed -f
# Table de transcodage de ISO-8859-1 vers HTML
# Fichier "regle.sed"
s/É/É/g
s/È/È/g
s/Ê/Ê/g
s/Ë/Ü/g
s/À/À/g
s/Á/Á/g
s/Â/Â/g
s/Ç/Ç/g
s/Û/Û/g
s/Ü/Ü/g
s/é/é/g
s/è/è/g
s/ê/ê/g
s/à/à/g
s/á/á/g
s/â/â/g
s/ç/ç/g
s/ô/ô/g
# Re
Posté par roule007 . Évalué à 1.
il me transforme :
spécial en spéeacute;cial
au lieu de me faire :
spécial en spécial
Voila ce que j'aimerais arranger!
Merci.
[^] # Re: Re
Posté par roule007 . Évalué à 1.
Regle.sed :
#!/usr/bin/sed -f
# Table de transcodage de ISO-8859-1 vers HTML
# Fichier "regles.sed"
s/É/É/g
s/È/È/g
s/Ê/Ê/g
s/Ë/Ü/g
s/À/À/g
s/Á/Á/g
s/Â/Â/g
s/Ç/Ç/g
s/Û/Û/g
s/Ü/Ü/g
s/é/é/g
s/è/è/g
s/ê/ê/g
s/à/à/g
s/á/á/g
s/â/â/g
s/ç/ç/g
s/ô/ô/g
En fait je viens de détailer, et aprés le passage de sed sur mon fichier,
il me transforme :
spécial en spéeacute;cial
au lieu de me faire :
spécial en spécial
[^] # Re: Re
Posté par solsTiCe (site web personnel) . Évalué à 1.
ça devrait le faire
il faut rajouter un \ devant &
[^] # Re: Re
Posté par roule007 . Évalué à 1.
Dans mon fichier XML j'ai bien pour Combiné : Combiné
Ce qui est bon mais apres quand je le parse avec sablotron pour le rentrer dans ma base de donnée, voilà ce qu'il me met : Combiné
Comment puis-je corriger cela car je pense que lorsque je vais vouloir afficher les champs de ma base de donnée il y aura boulette !?
[^] # Re: Re
Posté par gc (site web personnel) . Évalué à 2.
Il faut juste que ton "parseur" lise l'entête du fichier XML décrivant le codage utilisé, et fasse une convertion vers le codage attendu par ta base de donnée (ou le driver que tu utilises pour y accéder).
En ligne de commande tu as `iconv' pour faire cette conversion.
# Unicode !
Posté par JJD . Évalué à 1.
Apparemment tes données XML sont codées en Unicode (UTF8) et pas en iso-8859-1. Cela explique que lorsque tu visualises la lettre é tu vois é (é est codé en UTF8 sur deux octets, mais tu visualises en considérant que c'est de l'iso-8859-1 et tu vois donc 2 caractères).
Il existe, à mon avis, deux solutions à cela :
- tu paramètres ta base de données (ou uniquement la table qui va bien) pour lui dire que les champs texte sont en UTF8.
- tu convertis tes données XML en iso-8859-1 (avec un outil comme iconv).
Dans les deux cas, il n'est pas forcément nécessaire de coder ensuite en HTML (mais il y a peut être d'autres contraintes).
@+
JJD
[^] # Re: Unicode !
Posté par roule007 . Évalué à 1.
Ma base de donnée est en MYSQL donc je ne vois pas UTF8, idem pour ma table, je peux choisir :
MyISAM
HEAP
ISAM
MERGE
Si tu as eu idée dit moi !
Merci.
[^] # Re: Unicode !
Posté par JJD . Évalué à 1.
Quand tu crées la table concernée, dans la définition de ton champ tu déclares quelque chose du genre :
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 );
Ceci est valable pour les versions récentes de mysql (>=4.1).
Il me semble que l'on peut également préciser la chose ainsi :
CREATE TABLE t (c CHAR(20) UNICODE );
je te conseille tout de même d'aller voir les documentations mysql pour plus de précisions (par exemple sur http://www.nexen.net/(...) )
JJD
# MERCI A TOUS
Posté par roule007 . Évalué à 1.
J'ai encoder mon fichier xsl en iso-8859-1 de manière à garder le même format que mon fichier xml.
Plus le \& sa roule !!!
Donc merci à tous !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.