fd.write('<des>Désignation produit : <produit>%s</produit></des>\n' % desProduit)
Ah !
Voilà le problème.
En quel encodage est ton fichier ?
ISO-8859-1 (jeu de caractère Windows), UTF-8, autre ?
Il faut impérativement encoder les chaînes.
Et tu devrais mettre toutes tes chaines en Unicode.
Ce qui donne:
machaine = u'<des>Désignation produit : <produit>%s</produit></des>\n' % desProduit
fd.write(machaine.encode('utf-8')
Si les mots encodage et jeu de caractère ne te parlent pas, il est impératif de lire ceci:
http://sebsauvage.net/python/charsets_et_encoding.html
C'est la source de tes problèmes.