Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 04/03/2007, à 14:06

nouveau_nunuxien

galère avec les formats de texte

c'est mon premier post sur ce forum, donc déjà bonjour à tous!
j'ai commencé le développement en C++ sous windows avec dev-C++ et là je contimue sous linux, mais j'ai des problèmes de compatibilité
les sources tapées sous windows avec dev-C++ sont déjà dures à lire sous ubuntu, la moins mauvaise solution est vi qui convertit automatiquement l'encodage(en UTF-8 je crois), sinon avec kate par exemple j'ai un massacre à la place des accents.
déjà ça ce n'est pas facile...
mais le pire c'est dans l'autre sens : de linux vers windows le pauvre dev-C++ n'a aucune façon de lire une source tapée sous linux et voit en permanence les accents transformée en A°ù$ù ou des trucs du genre
je voudrais une solution qui permette
- de pouvoir compiler les mêmes fichiers sources sous linux et windows
- d'avoir une sortie correcte en console sous linux et windows(sans accents massacrés donc)
- d'avoir une sortie correcte avec SDL_ttf pareil sous linux et windows
merci

Hors ligne

#2 Le 04/03/2007, à 14:54

abetsic

Re : galère avec les formats de texte

Le problème vient de l'encodage des fichiers sous windows et sous linux qui est différent (iso8859-15 sous windows, et utf8 sous linux).

La solution consiste à convertir tes sources avec iconv, de mémoire ca doit être comme ça :
iconv -f iso8859-15 -t utf8 ton_fichier_windows > ton_fichier_linux
pour transformer un fichier edité sous windows.
Et pour l'inverse :
iconv -f utf8 -t iso8859-15  ton_fichier_linux > ton_fichier_windows

tu peux faire "man iconv" dans une console pour plus d'infos sur iconv ou si je me suis trompé.

Hors ligne

#3 Le 04/03/2007, à 15:09

ssdg

Re : galère avec les formats de texte

Je ne sait pas pour Kate, mais Gedit (équivalent Gnome) à la possibilité de découvrir l'encodage tout seul comme un grand. regarde à tout hasard dans les préférences de Kate.

ça fait 2 ans que je n'ai pas utilisé dev-c++ mais regarde aussi s'il n'en est pas capable et je crois qu'il utilise g++, prochaine info devrais t'être utile.

enfin regarde du coté des options de g++:
-fexec-charset=charset
-fwide-exec-charset=charset
-finput-charset=charset

Mais j'avoue avoir bien galèré au moment du passage à linux a cause de ces **** de charsets diffréents. (on retrouve le même problème avec IRC, le (X)HTML, ...)

Edit: abtesic, ta solution à l'air vachement plus simple, au moins j'ai découvert les options de gcc.

Dernière modification par ssdg (Le 04/03/2007, à 15:11)


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#4 Le 04/03/2007, à 17:11

nouveau_nunuxien

Re : galère avec les formats de texte

merci c'est une solution qui a l'air pratique iconv, y connaissant presque rien en bash j'aimerais bien un petit script qui convertit de format linux à format windows tout ce qui finit par .cpp ou .h dans un dossier
sinon un autre problème : pour que la console windows ne me massacre pas mes accents j'ai vu qu'il y a CharToOEM qui corrige ça, mais comment faire pour qu'il applique automatiquement cette fonction à toute chaîne qui sort par printf? je ne tiens pas particulièrement à 5 lignes de préprocesseur pour faire un printf (vu que ça doit évidemment marcher aussi sous nunux)...

Dernière modification par nouveau_nunuxien (Le 04/03/2007, à 17:11)

Hors ligne

#5 Le 04/03/2007, à 17:22

abetsic

Re : galère avec les formats de texte

le script doit ressembler à ça :

#!/bin/bash
mkdir linux_src

for i in *.cpp;
do
   iconv -f iso8859-15 -t utf8 $i > linux_src/$i
done
for i in *.h;
do
   iconv -f iso8859-15 -t utf8 $i > linux_src/$i
done

Hors ligne

#6 Le 04/03/2007, à 19:01

nouveau_nunuxien

Re : galère avec les formats de texte

l'idée est bonne mais le format n'est pas le bon mad
j'ai toujours des accents massacrés sous dev-C++

Dernière modification par nouveau_nunuxien (Le 04/03/2007, à 19:21)

Hors ligne

#7 Le 04/03/2007, à 19:44

abetsic

Re : galère avec les formats de texte

pour windows :

#!/bin/bash
mkdir windows_src

for i in *.cpp;
do
   iconv -f utf8 -t iso8859-15 $i > windows_src/$i
done
for i in *.h;
do
   iconv -f utf8 -t iso8859-15 $i > windows_src/$i
done

Hors ligne

#8 Le 04/03/2007, à 20:24

nouveau_nunuxien

Re : galère avec les formats de texte

en trois lettres : YES!!!!!!!
ça marche bien
il reste le problème de printf et de la console windows... encore que win et linux aient un format différent, mais que Microsoft lui même soit pas cohérent dans ses formats ça me dépasse

Hors ligne

#9 Le 04/03/2007, à 21:55

aleph

Re : galère avec les formats de texte

Pour la nième fois :

Règle de base: un texte, suite de caractères, n'a de sens que si l'on connaît son encodage.

1) L'encodage par défaut sous Windows (interface graphique) n'est pas iso-xxxx mais cp1252.

2) L'encodage par défaut d'une console DOS est cp850 pour les systèmes de l'Europe de l'Ouest (Western  Europe) ou cp437 pour les Etats-Unis.

3) Aucun éditeur n'est capable - et ne le sera jamais - de déterminer l'encodage d'un fichier texte.

4) Les systèmes Linux et Windows (et d'autres) ou plutôt les bonnes applications de ces systèmes - peuvent  travailler indifféramment avec différents encodages (générallement, ce sont ascii, cp1252, iso-8859-1 et utf-8, iso-8859-15 est moins utilisé) pour les utilisateurs de langues latines et anglo-saxonnes).

5) De 4) il découle que ces systèmes sont cohérents, les problèmes qui se posent sont générallement dus à une méconnaissance du fonctionnement des encodages.

6) Il est faut de croire qu'il faille changer l'encodage d'un fichier pour passer d'un système à un autre. Si l'échange de fichiers est régulier, il est préférable de régler ses outils de travail (éditeurs, ...) en conformité avec les dits fichiers.

7) Attention: le web est archi bourré d'informations fausses à ce sujet. (C'est particulièrment vrai pour ce forum).

8) Attention (2): Se méfier comme la peste de l'apparence d'une conversion réussie. Les encodages étant similaire pour de nombreux caractères, de nombreux utilisateurs croient en voyant le texte que la conversion était correcte ou suffisante alors que les chois de options de conversion sont erronées.

9) Une bonne introduction/ explication sur ce que sont les encodages est ici:
http://www.joelonsoftware.com/articles/Unicode.html

9) Amen

#10 Le 04/03/2007, à 23:49

abetsic

Re : galère avec les formats de texte

Mea culpa, tu peux remplacer iso8859-15 par cp1252 dans les scripts et commandes.

Hors ligne

#11 Le 05/03/2007, à 00:09

ssdg

Re : galère avec les formats de texte

Ca vaudrais peut être le coup d'ouvrir une page de doc pour ce type de problèmes.

(si en plus on y ajoute le script d'abetsic, ça fera sans doute plaisir à plein de monde)

Bon, reste plus qu'a trouver un admin du site wink

Aleph> c'est vrai qu'ils ne peuvent pas le déterminer à coup sur, mais certains font d'assez bonnes approximations. (D'ailleurs, quand on commence à vouloir savoir dans quel encodage ils ont fait ça, en général ils ne te disent pas ce qu'ils pensent que c'est et c'est assez frustrant.)


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#12 Le 05/03/2007, à 02:02

Julian

Re : galère avec les formats de texte

ssdg a écrit :

Ca vaudrais peut être le coup d'ouvrir une page de doc pour ce type de problèmes.
(si en plus on y ajoute le script d'abetsic, ça fera sans doute plaisir à plein de monde)
Bon, reste plus qu'a trouver un admin du site wink

Pas besoin d'admin pour alimenter le wiki wink
Ça ne tient qu'à vous.


julian@jabber.fr

Hors ligne

#13 Le 05/03/2007, à 21:14

nouveau_nunuxien

Re : galère avec les formats de texte

oui je trouve que c'est une bonne idée le fait de faire de la doc pour ça vu que j'ai bien lutté pour chercher sur le net avant de poster ici et je n'ai rien trouvé.
Surtout un script comme ça c'est pour moi indispensable, qui n'envoie jamais de fichiers à des windowsiens?

Hors ligne

#14 Le 05/03/2007, à 23:16

aleph

Re : galère avec les formats de texte

> nouveau_nunuxien
Surtout un script comme ça c'est pour moi indispensable, qui n'envoie jamais de fichiers à des windowsiens?
--
Utile, oui. Indispensable, non.

Je maintiens qu'il est préférable de garder les fichiers en leurs états. Pourquoi ajouter une difficulté supplémentaire ? Comme je l'ai dit plus haut, tous les bons outils sous toutes les plaformes gèrent très bien les différents encodages (éditeurs, compilateurs, interpréteurs...). C'est à l'utilisateur de les utiliser correctement.

D'autre part, je le répète, il est faux de croire que c'est un problème entre Linux et Windows. C'est aussi le cas entre les distributions Linux. Il y a des distributions Linux basées sur utf-8 et des distributions Linux basées sur iso-8858-1 (souvent les plus professionnelles).

L'exemple le plus illustratif est le web et ses fichiers html. Je travaille sour Windows en cp1252, si je reçois un fichier encodé en utf-8, vais-je le rencoder pour pouvoir le lire sur mon navigateur ? Evidemment non. L'inverse est aussi vrai. Le même raisonnement s'applique aux bases de données dont les strings ont un encodage défini.

> ssdg
Aleph> c'est vrai qu'ils ne peuvent pas le déterminer à coup sur, mais certains font d'assez bonnes approximations. (D'ailleurs, quand on commence à vouloir savoir dans quel encodage ils ont fait ça, en général ils ne te disent pas ce qu'ils pensent que c'est et c'est assez frustrant.)
--
Tu as tout à fait raison de le souligner. C'est d'ailleurs ce que font les navigateurs quand aucun charset n'est défini.
Dans le cas, de code source, c'est plus délicat. Si les mots clés d'un langage de programmation sont générallement "en langage ascii",  c'est dans les "string" que le problème devient vite critique.
Si le coeur t'en dis et si cela t'intéresse, ce lien http://www.pyzine.com/Issue008/Section_Articles/article_Encodings.html#bom-encoding-signatures
propose en Python une méthode pour essayer de découvrir l'encodage d'un fichier texte.


Pour terminer, à tous ceux qui veulent apprendre et comprendre comment fonctionne les encodages et décodages de chaînes de caractères, je conseille de jouer avec une console interactive Python et de s'amuser à encoder/décoder (encode, decode) cette chaîne d'un encodage à un autre.

Sous windows, je conseille mon interpréteur Python psi disponible ici http://spinecho.ifrance.com/.
A la différence des consoles usuels Python comme IDLE, psi contient par défaut dans son module d'initialisation une fonction qui modifie l'affichage tout en tenant compte de l'encodage et ceci sans qu'une erreur de type UnicodeEncodeError soit affichée.

#15 Le 06/03/2007, à 00:15

nouveau_nunuxien

Re : galère avec les formats de texte

aleph :
Je maintiens qu'il est préférable de garder les fichiers en leurs états. Pourquoi ajouter une difficulté supplémentaire ? Comme je l'ai dit plus haut, tous les bons outils sous toutes les plateformes gèrent très bien les différents encodages (éditeurs, compilateurs, interpréteurs...). C'est à l'utilisateur de les utiliser correctement.

c'est peut-être possible, mais par exemple lire de l'utf-8 sous windows est bien galère: peut-être en spécifiant sous notepad (avec notepad2 c'est possible), par contre j'ai bien regardé dev-C++ ne peut pas il n'y a pas d'option, enfin je n'en ai pas vue

Dernière modification par nouveau_nunuxien (Le 06/03/2007, à 00:17)

Hors ligne

#16 Le 06/03/2007, à 09:47

aleph

Re : galère avec les formats de texte

> nouveau_nunuxien

Je ne veux pas contester tes choix, cependant je tiens quand même à faire deux remarques.

1) Je ne vois pas où est la difficulté de lire un fichier unicode sous Windows. Si le fichier est encodé en cp1252 ou iso-8859-1 NotePad l'ouvre sous cette forme. Si le fichier est encodé en utf-8, NotePad l'ouvre aussi et automatiquement sous cette forme. Il n'y a absolument aucune option à spécifier, NotePad étant capable de lire la marque BOM d'un encodage utf-8, à savoir '\xef\xbb\xbf'.
Ici je parle de NotePad w2k et plus, NotePad sous win 98 n'est pas capable de le faire (de mémoire).

2) Je ne connais pas dev C++, il m'étonnerait fort que cet environnement de développement utilisant les compilateurs gcc ou mingw, si j'ai bien compris,  ne soit pas capable de lire les fichiers encodés en utf-8. Google: dev-cpp, unicode files.

#17 Le 06/03/2007, à 09:58

iuchiban

Re : galère avec les formats de texte

Fais comme moi : mets aucun accent dans tes sources. Même pas dans les commentaires.
On avais le même soucis à l'IUP où on codait alternativement sur Linux et Windows, donc depuis, je ne mets aucun accent.


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#18 Le 06/03/2007, à 10:24

aleph

Re : galère avec les formats de texte

> iuchiban

Ca, c'est vraiment la pire des choses à faire. Emmerdement assurés.

Tout développeur se doit de comprendre les encodages et être capable d'y faire face correctement.

#19 Le 06/03/2007, à 12:32

iuchiban

Re : galère avec les formats de texte

Bon de base le langage humain utilisé pour la grande majorité des langages de programmation est l'anglais (if then else for while).

Donc je trouve que c'est vachement plus simple de faire des programmes sans aucun accent plutôt que de s'emmerder à changer l'encodage quand tu passes d'un windows à un Linux. Surtout que quand tu vas poser ton code sur un autre PC, il faudra aussi le configurer.

Hier j'ai récupérer un code JAVA sur codes-sources.com.

Quand j'ai voulu le compiler, ben il m'a sorti plein d'erreurs parce que y'avait des lettres accentuées (é è ê à â ù, etc), donc un petit coup de rechercher-remplacer pour toutes ces lettres et plus de problème de compil.

Après si vous préférez vous embeter à ouvrir notepad avec de l'UTF8, iso 8859 ou autre, ben amusez vous. Vive la liberté d'utilisation de l'informatique.

Moi je continue à pas mettre d'accents.


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#20 Le 06/03/2007, à 18:41

aleph

Re : galère avec les formats de texte

> iuchiban

L'utilisation de caractères accentués et l'encodage d'un "string" ou d'un fichier texte sont deux choses différentes. Même un bout de texte comme abc peut être encodé de diverses manières.

Je ne peux que te conseiller de prendre un peu de temps, de lire de la doc et d'être au clair à ce sujet. Pour quelqu'un qui touche à l'informatique c'est vraiment un point clé à comprendre. Ce n'est pas un problème lié au système d'exploitation, mais cela touche tous les documents électroniques que ce soit un simple fichier texte, du code source, du html, du xml, un fichier (La)TeX ou des bases de donnée. Et j'en ai certainement oublié quelques uns.

#21 Le 08/03/2007, à 21:32

nouveau_nunuxien

Re : galère avec les formats de texte

oui, ne pas mettre d'accents est une solution, mais c'est complètement impossible
déjà pour les commentaires, ils sont en français évidemment et français implique accents
ensuite pour les chaînes de caractère incluses dans le code qui pareillement sont en français, donc avec accents
c'est quand même moche de faire des fautes d'orthographe délibérément pour que le PC soit content:P

sinon pour dev-cpp j'ai bien peur que ce soit impossible de manière simple, c'est à dire sans trafiquer les headers

Dernière modification par nouveau_nunuxien (Le 08/03/2007, à 21:34)

Hors ligne

#22 Le 08/03/2007, à 23:56

gene69

Re : galère avec les formats de texte

aleph a écrit :

> iuchiban

Ca, c'est vraiment la pire des choses à faire. Emmerdement assurés.

Tout développeur se doit de comprendre les encodages et être capable d'y faire face correctement.

la solution la plus simple pour les accents reste d'utiliser l'anglais... j'ai dis une ânerie ?
les plus gros problèmes deviennent invisibles, sauf évidement lorsqu'on utilise des outils comme ma version de subversion qui ne comprend que l'utf8, la bougre.


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#23 Le 09/03/2007, à 00:06

Balkoth

Re : galère avec les formats de texte

Je suis totalement d'accord avec aleph, il est tout à fait possible de travailler correctement sans se priver des accents.
Il suffit de passer tous ses documents dans un encodage standard (utf8 pour moi), et en utilisant les bons outils, pas de problème.
D'ailleurs, je recommande geany, qui entre autres qualités, gère parfaitement les divers encodages.

Hors ligne

#24 Le 09/03/2007, à 13:05

aleph

Re : galère avec les formats de texte

> la solution la plus simple pour les accents reste d'utiliser l'anglais... j'ai dis une ânerie ?

Oui et non. Je pense plutôt pour le oui (sans reproche). Comme je l'ai dit plus haut, l'utilisation de caractères accentués (pour rester dans le monde latin) et l'encodage d'un texte sont deux choses différentes. Ne pas utiliser de caractères accentués ne change en rien l'encodage d'un texte. Ce n'est que cacher les problèmes potentiels. Au contraire, si l'on utilise des caractères accentués et que des problèmes apparaissent, cela montre que l'encodage utilisé n'est pas le bon.

> les plus gros problèmes deviennent invisibles...
Justement invisibles, mais ils sont là.

>...sauf évidement lorsqu'on utilise des outils comme ma version de subversion qui ne comprend que l'utf8, la bougre.
Comme déjà dit, il est très important de savoir avec quel encodage l'on travaille.

> Je suis totalement d'accord avec aleph, il est tout à fait possible de travailler correctement sans se priver des accents.
Ce n'est pas tout à fait ce que j'ai dit. J'ai dit que l'on pouvait travailler sans problème avec différents encodages. Que l'on utilise ou non des caractères accentués ne change rien.

> Il suffit de passer tous ses documents dans un encodage standard (utf8 pour moi) , et en utilisant les bons outils, pas de problème.
Justement si l'on utilise les outils correctement cela n'est pas nécéssaire, même si parfois cela est utile. Quand tu lis un document html, tu ne t'occupe pas de son encodage et ne t'amuse pas à le convertir pour le lire. Grand amateur de Python sous w2k, j'utilise des scripts encodés en cp1252, iso-8859-1 et utf-8 sans aucun problème et de façon transparente que ce soit à l'édition ou à l'exécution.

>...un encodage standard (utf8 pour moi)...
Tous les encodages sont standards, si utf-8 est très utilisé, il n'est pas plus standard qu'un autre.

>D'ailleurs, je recommande geany...
Je ne connais que de nom et viens d'y jeter un oeil.

> ...qui entre autres qualités, gère parfaitement les divers encodages.
Ce qui ne fait que confirmer que convertir les fichiers d'un encodage à un autre n'est pas nécessaire.

#25 Le 09/03/2007, à 15:08

Willen

Re : galère avec les formats de texte

abetsic a écrit :

pour windows :

#!/bin/bash
mkdir windows_src

for i in *.cpp;
do
   iconv -f utf8 -t iso8859-15 $i > windows_src/$i
done
for i in *.h;
do
   iconv -f utf8 -t iso8859-15 $i > windows_src/$i
done

Bonjour,
Petit détail, je crois qu'il est inutile de répéter, il suffit de mettre les extensions choisies à la suite :

#!/bin/bash
mkdir windows_src

for i in *.cpp *.h
do
   iconv -f utf8 -t iso8859-15 "$i" > "windows_src/$i"
done

Hors ligne

Haut de page ↑