Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 29/09/2011, 15h29   #1
kgboris
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
50Nio
Membre actif
 
Inscription : août 2009
Messages : 154
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 154
Points : 193
Points : 193
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
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h07.


 
 
 
 
Partenaires

Hébergement Web