Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 1


|
Conversation : Compilation wxwidgets 2.9.5 Unicode |
antoine163 (Membre)
Inscrit le : 09-07-2010
Messages: 10
Snippets: 1
Tutoriels: 0
Hors ligne |
Bonjour à tous,
Je suis en train d'écrire une application, mais j'ai un problème d'encodage ou Unicode je n'ai pas trop. Je pense que cela vient de la compilation des libs (je n'en suis pas sur).
En fait, sous Linux je n'ai pas de problème. Par exemple avec ce code :
Code wxWidgets:wxMessageBox("Salut à toi!"); Le "à" s'affiche correctement. Et sous Windows le "à" s'affiche avec des caractères bizarres.
Par compte (toujours sous Windows) avec ce code :
Code wxWidgets: Cela s'affiche correctement.
Est-ce que quelqu'un vois le problème ? En sachant que je ne connais pas vraiment les options de compilation de wxWidgets sous linux (Récupèrent dans les dépôts). Par compte sous Windows, j'ai utilisé cette ligne de commande pour compiler les libs
Code:mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release VENDOR=win32 Je ne sais pas si cela vient de la compilation de wxWidgets, mais je pense qu'il me manque une option à rajouter quelque part ...
Merci
+ Antoine
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1372
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut.
Quelle version de wxWidgets utilises-tu ? 2.8.12 ou 2.9.5 ?
Essayes directement de mettre :
Code wxWidgets:wxString tmp(_T("Salut à toi!")); wxMessageBox(tmp);
@+ Xav'
Dernière modification par Xaviou (13-09-2013 17:40:43)
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
antoine163 (Membre)
Inscrit le : 09-07-2010
Messages: 10
Snippets: 1
Tutoriels: 0
Hors ligne |
Salut,
La version est la 2.9.5.
Effectivement ton code fonctionne. Ceci dit, j'ai un wxString qui est plus ou moi un fichier codé en utf8. Je ne peux donc pas utiliser la macro _T (en tous les cas, cela ne compile pas).
Le code suivent fonctionne sous linux et j'aimerais aussi le faire fonctionner sur Windows.
Code wxWidgets:wxMessageBox("Salut à toi!");
Peut être que je me trompe. Je n'ai pas encore essayé. Mais je pense que je vais avoir des caractères bizarres quand je vais vouloir traduire mon application en français.
Merci + Antoine
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1372
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
antoine163:Ceci dit, j'ai un wxString qui est plus ou moi un fichier codé en utf8. Je ne peux donc pas utiliser la macro _T (en tous les cas, cela ne compile pas). Tu es certain que ton fichier est en UTF-8 ? Je parie que tu as une erreur du style converting to execution character set: Invalid argument
antoine163:Peut être que je me trompe. Je n'ai pas encore essayé. Mais je pense que je vais avoir des caractères bizarres quand je vais vouloir traduire mon application en français. En fait, si tu souhaites avoir une application utilisant le système de traduction, ça sera plus simple. En effet, tu devras coder ton application en anglais (donc, sans caractères spéciaux) et seul le fichier de traductions contiendra des caractères Unicode.
A moins que tu décides de coder directement en français. Dans ce cas (quand tu obtiens l'erreur ci-dessus), il faut juste convertir ton fichier source en UTF-8 Sous Code::Blocks, tu ouvres ton fichier dans l'éditeur, tu vas dans le menu "Edit", "File Encoding", "UTF-8", puis, très important sinon la manip ne sert à rien, tu redonnes le focus à l'éditeur en cliquant dedans (à ce moment là, tu as l’indication dans la barre d'état qui passe de "WINDOWS-1252" à "UTF-8" et tu l'enregistres avant de lancer la compilation.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
antoine163 (Membre)
Inscrit le : 09-07-2010
Messages: 10
Snippets: 1
Tutoriels: 0
Hors ligne |
Xaviou:Tu es certain que ton fichier est en UTF-8 ? Oui, je me suis battu pour ça.
Xaviou:Je parie que tu as une erreur du style converting to execution character set: Invalid argument Je devrais voir cela où ?
Pour tout dire, je développe sous linux en anglais (en français pour les commentaires), tous mes fichiers sont encodé en utf8. Je suis en train de faire un peu de portabilité sous Windows mais j'ai ce problème que je n'arrive pas à résoudre.
Merci + Antoine
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1372
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
antoine163:Xaviou:Je parie que tu as une erreur du style converting to execution character set: Invalid argument Je devrais voir cela où ? Dans les build logs
antoine163:Pour tout dire, je développe sous linux en anglais (en français pour les commentaires), tous mes fichiers sont encodé en utf8. Je suis en train de faire un peu de portabilité sous Windows mais j'ai ce problème que je n'arrive pas à résoudre. Tu utilises quoi comme IDE ? Et est-ce tes fichiers sources sont en UTF-8 avec ou sans "B.O.M." ?
Pour ma part, en utilisant Code::Blocks, j'utilise les mêmes fichiers sources sous Windows et sous Linux, sans retoucher quoi que ce soit, et même avec les caractères accentués, ça marche.
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
antoine163 (Membre)
Inscrit le : 09-07-2010
Messages: 10
Snippets: 1
Tutoriels: 0
Hors ligne |
Dans les logs je n'ai rien vu.
Je n'utilise pas d'IDE, enfin si, Geany ,mais en tant qu'éditeur de texte, après j'ai mes makefiles ...
Mes fichiers sources sont encodés en utf8 sans BOM. Faut'il que j'active le BOM ?
Xaviou:Pour ma part, en utilisant Code::Blocks, j'utilise les mêmes fichiers sources sous Windows et sous Linux, sans retoucher quoi que ce soit, et même avec les caractères accentués, ça marche. Je vais essayer de compiler mon projet avec les libs que tu proposes, pour voir si le problème persiste toujours ...
Merci,
+
Antoine
|
|
antoine163 (Membre)
Inscrit le : 09-07-2010
Messages: 10
Snippets: 1
Tutoriels: 0
Hors ligne |
Re salut,
Je n'ai pas réussi à compiler avec les libs que tu proposes. Enfin bref, j'ai fait un test avec code::block J'ai créé un projet de base, j'ai rajouté la fameuse ligne :
Code wxWidgets:wxMessageBox("Salut à toi!"); J'ai compiler et puis ça fonctionne. Et l'encodage des ficher étaient en WINDOWS-1252. J'ai changé ça, en utf-8, compilé et je reviens dans mon cas ou le "à" s'affiche avec des caractères bizarres.
+ Antoine
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1372
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
C'est normal.
Si tu mets ta chaîne de caractères entre de simples guillemets, il s'agit d'un const char *, c'est à dire une suite de caractères "Ansi".
Si par contre tu utilises la macro _T("..."), dans le cas de libs Unicode, c'est considéré comme un const wchar_t*, soit une suite de caractères Unicodes.
Il faut donc que le fichier source soit en corrélation avec le mode de compilation.
Sachant qu'à partir de wxWidgets-2.9.x, on peut mettre les deux cas pour construire un wxString, et c'est le framework qui va faire la conversion en Unicode si besoin est.
Si le fait d'utiliser la macro _T("...") te déranges, tu peux juste faire précéder tes chaînes de caractères d'un "L" (exemple : wxMessageBox(L"Salut à toi"); ) mais il faudra également que ton fichier source soit en UTF-8.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
antoine163 (Membre)
Inscrit le : 09-07-2010
Messages: 10
Snippets: 1
Tutoriels: 0
Hors ligne |
ok,
Je voulais que "wxMessageBox("Salut à toi");" fonction aussi sous Windows parce que cela fonctionne très bien sous linux (fichier coder en UTF-8 ) ...
Bref, je crois je vais arrête là. 
+ Antoine
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1372
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Tu utilises la même version de wxWidgets sous Linux ?
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
antoine163 (Membre)
Inscrit le : 09-07-2010
Messages: 10
Snippets: 1
Tutoriels: 0
Hors ligne |
oui la 2.9.5
|
|
|