J'ai fait des tests sous Quantal (hors virtualisation, en live) et j'ai pu comprendre ce qui se passe :
- si on utilise une version 4.6 de QT tout va bien, c'est ce qui se passe sous Ubuntu 10.04 que j'utilise pour developper Bouml
- si on utilise une version 4.8.1 de Qt on retrouve votre comportement. C'est donc le cas sous Quantal mais aussi sous MacOS ce que je n'avais pas vu
Le problème se situe dans la gestion des
QTextStream basé sur un
QByteArray en argument, dans une version 4.8 les caractères accentués sont perdus, et je n'ai pas pu palier à cela même en paramétrant un codec ou demandant la non détection de l'UTF8 etc. Pour moi c'est un bug introduit dans QT 4.8 car ne pas pourvoir indirectement ajouter un caractère (8 bits) dans une structure de donnée manipulant des caractères( 8 bits) n'a aucun sens !
La bonne nouvelle c'est que ce bug disparait si j'utilise un
QTextStream basé sur un
QString, c'est à dire en faisant de façon compliquée et chère avec des translations de caractères quelque chose qui ne nécessitait pas de translation
Je n'ai plus qu'à trouver la version précise de Qt où le bug a été introduit pour mettre une compilation conditionnelle, QT4 est franchement pénible, je n'avais pas tout ces problèmes avec Qt3 et Qt2.4 ...
A propos du codec
System, si vous l'utilisez le code généré (après remplacement du
QByteArray en
QString si besoin) sera lisible même en affichant le fichier via
cat, les éditeurs comme
gedit affichent également bien la chose. Si vous n'utilisez pas de codec l'affichage direct par
cat ne donne pas ce qui est attendu, par contre
gedit affiche ce qui est attendu. Bouml marche avec le codec
System ou sans codec (après remplacement du
QByteArray en
QString si besoin).