Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/09/2011, 15h29   #1
Invité de passage
 
Boris kgb
Inscription : décembre 2009
Messages : 9
Détails du profil
Informations personnelles :
Nom : Boris kgb

Informations forums :
Inscription : décembre 2009
Messages : 9
Points : 3
Points : 3
Par défaut concaténation de fichier avec awk qui rajoute un "line feed" faisant planter iconv

'jour tt le monde et au secours...

je ne fais pas "d'unix" par contre je suis obligé de l'administrer.

J'ai un plantage amusant.

Mon algo fait :
- concaténation de l'ensemble des fichiers présents dans un répertoire donnée avec awk
- puis une conversion UTF-8 vers ISO8859-1 avec iconv.

et là je plante dans iconv pour un caractère parasite qui se trouverai être un Line Feed (0A en hexa) en plein milieu d'un contenu XML avec des caractères spéciaux qui l'encadre
==> é mon line feed se trouve en plein milieu
==> C3 83 0A C2 A9 en hexa.

Etat des lieux
1- d'autres Line feed sont présent en amont du plantage et n'ont pas posé le problème.
2- d'autres é sans line feed à l'intérieur ont bien été transformés en '?' sans problème.
3- ce Line Feed est rajouté par la commande de concaténation

Conclusion : mauvaise ?
j'en conclu que c'est cette combinaison de caractères qui provoque le plantage de iconv.

Mais pourquoi la concaténation me rajoute ce line feed en plein milieu de mes é

1 semaine que je sêche...

concaténation

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
do
	if [ -f ${i} ]
	then
		cat ${i} | awk '{ if ( NF > 0 ) { print $0 } }' >> ${FICHIER_RESULTAT}
		ret=${?}
		if [ ${ret} -ne 0 ]	
		then
			retour=6
			logError "| Erreur ${retour} en concatenation du fichier ${i} dans ${FICHIER_RESULTAT} : retour ${ret}" >> ${LOG}
			exit ${retour}
		fi
	fi
done
ma conversion du fichier concaténé ci-dessus

Code :
1
2
iconv -f UTF-8 -t ISO8859-1 ${temp}/$fic.abc > ${temp}/$fic.abc.iso
kgboris est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 16h46   #2
Membre actif
 
Inscription : août 2009
Messages : 152
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 152
Points : 181
Points : 181
Le message est vieux, je suppose que c'est résolu de ton coté, mais si tu es toujours bloqué, envoie par MP un tar avec juste un fichier d'une ligne avec les caractères en question, je regarderais.
50Nio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h54.


 
 
 
 
Partenaires

Hébergement Web