Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/05/2007, à 16:44

valAa

[mi - Résolu]trouver l'encogade d'un fichier

Bonjour,

alors je viens vers vous pour un problème qui m'agace. je vous explique :

je dois pour un rapport exhumer un vieux projet PHP. Et j'ai un problème d'encodage...

ce projet avait à l'époque été réalisé sous Windows XP, j'utilisais PSPad comme éditeur avec (je suppose) l'encodage par défaut...

là, que ce soit sous quanta+, gedit ou même OOwriter, quelque soit l'encodage que je choisis à l'ouverture, mes accents ne passent pas... du coup tout mon texte en dur dans le code (html) est moche (caractères ésotériques à la place des accents).

bizarrement, pour ce qui est de la base MySQL (j'avais le même problème), j'ai pu m'en tirer en choisissant "latin1" lors de l'import SQL.

ma question est (je n'y connais rien en encodage...)
comment savoir quel est l'encodage utilisé par ces fichiers ?
si je trouve, comment (est-ce possible ?) convertir, pour me mettre en unicode UTF8, ce qui serait bien ?

en fait je suis surtout à la recherche de pistes, parce que je pédale un peu dans la choucroute là... hmm

merci !

Dernière modification par valAa (Le 07/05/2007, à 18:19)

Hors ligne

#2 Le 07/05/2007, à 16:49

Desintegr

Re : [mi - Résolu]trouver l'encogade d'un fichier

file peut être utilisé pour connaître l'encodage, et iconv peut être utilisé pour convertir les fichiers dans d'autres encodages.


Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr

Hors ligne

#3 Le 07/05/2007, à 16:50

valAa

Re : [mi - Résolu]trouver l'encogade d'un fichier

ok, je regarde de ce côté là, merci pour ton aide ! smile

Hors ligne

#4 Le 07/05/2007, à 17:17

valAa

Re : [mi - Résolu]trouver l'encogade d'un fichier

ah... ben file me sort

form_modif.php: text/html; charset=utf-8

et pourtant...

quanta+ en utf8 a écrit :

$arr_titres=array('Nom','Code','Description','Date de d�p�t','Temps de conservation','Conditionnalit�','R�glementaire/Conseill�','Organismes de contr�le','Particularit�s','Nom du texte r�glementaire', 'Num�ro du texte r�glementaire', 'Domaine r�glementaire');

heu... une idée ? je continues à chercher l'origine du problème...

Hors ligne

#5 Le 07/05/2007, à 18:06

Alain.g

Re : [mi - Résolu]trouver l'encogade d'un fichier

Bonjour

Il est probable que l'encodage soit ANSI (CP-1252) ou iso-8859-1(5), mais je dirais plutôt le premier.

Ce qui est bizarre, c'est que Gedit devrait t'ouvrir le fichier directement dans le bon encodage (ou presque)


Xubuntu Karmic !

Hors ligne

#6 Le 07/05/2007, à 18:18

valAa

Re : [mi - Résolu]trouver l'encogade d'un fichier

merci Alain.g,

malheureusement je crains que la partie ne soit perdue.... les encodages que tu me suggère ne fonctionnent pas mieux.

tous les outils que j'ai utilisé détectent l'encodage comme du UTF-8, mais malgré cela n'arrivent pas à afficher les caractères accentués...

alors je ne sais pas si c'est possible, mais je crois que dans mon cas l'unicode n'y retrouve plus ses petits ! il est possible que bidouille après bidouille (ce projet a été beaucoup testé, modifié, bidouillé sur pas mal de plates-formes différentes...), certaines parties du document utilisent un charset et d'autres un autre....

bref, les outils que m'a indiqué Desintegr permettent bien de détecter et convertir l'encodage d'un fichier...
je passe donc en [mi - Résolu]

par contre, pour mon projet, j'ai bien peur qu'il ne me reste plus que mes petites paluches big_smile au boulot !! (heureusement, c'est plutôt un petit projet hmm )

Dernière modification par valAa (Le 07/05/2007, à 18:21)

Hors ligne

#7 Le 07/05/2007, à 18:24

Alain.g

Re : [mi - Résolu]trouver l'encogade d'un fichier

En fait, pour détecter l'encode, UTRAC est plus fiable que FILE même si aucun des deux n'est infaillible.

les �, c'est typiquement ce qu'on obtient en tentant d'afficher en UTF8 un fichier encodé en ANSI/ISO-8859.
Dans l'autre sens, ça donne des é

Dernière modification par Alain.g (Le 07/05/2007, à 18:26)


Xubuntu Karmic !

Hors ligne

#8 Le 07/05/2007, à 18:24

padawan_ubu

Re : [mi - Résolu]trouver l'encogade d'un fichier

Je suis également utilisateur de PSPAD sous Windows.
Si ton projet est ancien, essayes de le rouvrir avec la dernière version dispo et sauvegarde le sur une partition FAT. (style clef USB)

De cette manière j'ai pu récupérer un code source ancien ( presque 2 ans).

C'est pas garanti mais on ne sait jamais...


la Vérité d'aujourd'hui n'est plus celle de hier et pas encore celle de demain

Hors ligne

#9 Le 07/05/2007, à 18:38

valAa

Re : [mi - Résolu]trouver l'encogade d'un fichier

@padawan-ubu :  j'ai booté sur windows pour la première fois depuis deux mois - (fait mes mises à jour Antivirus, MAJ de sécurité, rebooté) big_smile - installé PSPad, et pfiut, pas mieux....
pourtant le projet date de l'été dernier, mais il a beaucoup voyagé depuis hmm

@Alain.g
en ANSI/ISO-8859, je récolte des "ï¿œ" tongue

Dernière modification par valAa (Le 07/05/2007, à 18:38)

Hors ligne

#10 Le 07/05/2007, à 18:44

Desintegr

Re : [mi - Résolu]trouver l'encogade d'un fichier

Si tu as des « ï¿œ », je crois que tu as définitivement perdu tes caractères accentués. (à vérifier)

Ça me l'a déjà fait, et j'ai du réécrire tous les accents manuellement.


Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr

Hors ligne

#11 Le 07/05/2007, à 18:49

valAa

Re : [mi - Résolu]trouver l'encogade d'un fichier

Desintegr a écrit :

Si tu as des « ï¿œ », je crois que tu as définitivement perdu tes caractères accentués. (à vérifier)

Ça me l'a déjà fait, et j'ai du réécrire tous les accents manuellement.

ouais, j'ai déjà commencé neutral
bon maintenant je reste en UTF-8 hein, je touche plus à rien !!!

merci à vous tous, mais vous ne pouvez pas récupérer n'importe quelle bêtise, hein, ce serait trop beau big_smile

allez j'y retourne, merci encore

[edit] par contre, iconv va me servir pour me débarasser du latin-1 sur mon dump MySQL, ça va me faire du bien... parceque sinon l'affichage des pages dans le navigateur, moitié utf-8 et moitié latin-1, ça va me prendre la tête !

Dernière modification par valAa (Le 07/05/2007, à 18:53)

Hors ligne

#12 Le 07/05/2007, à 19:05

Alain.g

Re : [mi - Résolu]trouver l'encogade d'un fichier

C'est le genre de chose qui peuvent arriver quand on utilise un éditeur KDE et qu'on enregistre avec le mauvais encodage. KDE 4 devrait pouvoir détecter automatiquement l'encodage

Mais si c'est comme ça pour toutes les pages, je ne sais pas trop comme tu as pu t'y prendre hmm


Xubuntu Karmic !

Hors ligne

#13 Le 07/05/2007, à 20:40

valAa

Re : [mi - Résolu]trouver l'encogade d'un fichier

Mais si c'est comme ça pour toutes les pages, je ne sais pas trop comme tu as pu t'y prendre hmm

ben, en enregistrant toutes les pages ouvertes d'un coup ? big_smile y a même un bouton pour ça sur quanta+....

bref, j'y retourne... pffff on m'y reprendra plus, maintenant je vais carrément mettre l'encodage en suffixe sur les noms de fichiers, ça va bien faire marrer mes  correspondants tongue

Hors ligne

#14 Le 08/05/2007, à 11:36

aleph

Re : [mi - Résolu]trouver l'encogade d'un fichier

La bonne humeur aidant, voici quelques commentaires.

> en fait je suis surtout à la recherche de pistes, parce que je pédale un peu dans la choucroute là... hmm
Jetter un oeil ici, http://forum.ubuntu-fr.org/viewtopic.php?id=100832 (message #9) et sans vouloir être présomptueux, me croire.

> ma question est (je n'y connais rien en encodage...)
Le lien que je donne plus haut est, à mes yeux, excellent.

>file peut être utilisé pour connaître l'encodage
Faux.

> iconv peut être utilisé pour convertir les fichiers dans d'autres encodages.
Oui, si l'on connaît les encodages

>Il est probable que l'encodage soit ANSI (CP-1252) ou iso-8859-1(5), mais je dirais plutôt le premier.
ANSI n'est pas une encodage. C'est plutôt une table de correspondance, comme l'est UNICODE.
cp1252 ou iso-xxxx sont des encodages
Oui, il est *probable* qu'un fichier texte sous Windows soit encodé en cp1252, encodage par défault.

> Ce qui est bizarre, c'est que Gedit devrait t'ouvrir le fichier directement dans le bon encodage (ou presque)
C'est justement le "ou presque" qui pose problème. Les encodages étant souvent très similaires, on croit avoir le bon encodage alors que ce n'est pas le cas.

>tous les outils que j'ai utilisé détectent l'encodage comme du UTF-8, mais malgré cela n'arrivent pas à afficher les caractères accentués...
Attention, beaucoup d'outils ne détectent pas l'encodage, mais utilise les "tags" d'encodage déclarés.
L'erreur la plus fréquente est de déclarer un encodage dans une en-tête de fichier et d'enregister le fichier sous un autre encodage.
A propos de l'affichage, il faut comprende que l'encodage utilisé pour l'affichage n'est pas nécéssairement celui du fichier qui va être affiché. Ajoutons à cela, ma remarque précédente, on voit que l'on a un vrai casse-tête.

> il est possible que bidouille après bidouille
Très dangereux. Les encodages fonctionnent parfaitement quand on comprend le méchanisme qui est ma foi pas si évident.
Le gros problème du bidouilllage est que les erreurs ne sont pas toujours visibles et n'apparaissent que plus tard. Par ex., lors d'une édition/modification avec ajout de nouveaux caractères.

> certaines parties du document utilisent un charset et d'autres un autre....
A mois d'avoir écrit volontairement un programme qui le fait, c'est quasiment impossible.

> En fait, pour détecter l'encode, UTRAC est plus fiable que FILE même si aucun des deux n'est infaillible.
Juste.

>les �, c'est typiquement ce qu'on obtient en tentant....
Les point d'interrogations apparaissent à l'affichage, parce que le concepteur de l'application  l'a voulu ainsi. D'autres variantes sont possibles, le ? est le plus utilisé.

>Dans l'autre sens, ça donne des é
Oui, c'est ce qui arrive quand on veut afficher en iso-xxx ce qui est conçu pour être vu en utf-8.
Le A tillde correspond au premier byte d'un caractère unicode encodé en utf-8 avec deux bytes (très souvent les caractères accentués européens). Le copyright variera en fonction du "deuxème byte unicode". C'est pour cela que les caractères mal affichés commencent avec un A tilde suivi de quelque chose d'autre.

> Si ton projet est ancien, essayes de le rouvrir avec la dernière version dispo et sauvegarde le sur une partition FAT. (style clef USB)
La partition n'a rien à voir avec l'encodage du fichier enregistré sur la dite partition. Par contre, l'encodage des noms de fichiers (file system) varie avec le type de partition. Je rappelle que le système d'encodage des noms de fichiers sous fat32 est "mbcs" et non iso-quelquechose.

>KDE 4 devrait pouvoir détecter automatiquement l'encodage
kde 4 ne peut et ne pourra pas faire mieux que ce qui existe actuellement.

> Si tu as des « ï¿œ », je crois que tu as définitivement perdu tes caractères accentués. (à vérifier)
Tous les fichier utf-8 ne sont pas identiques ! Il y a des fichiers utf-8 qui contiennent une marque indiquant que ces fichiers sont en utf-8 et d'autres pas. Cette marque applée BOM (byte order marque) est composé de trois bytes. Ces trois bytes affichés en iso-xxxx vont donner ï¿œ.
Cette marque a été choisie volontairement de cette façon car il est très peu probable qu'un "fichier texte" commence avec ces trois caractères. Caractères qui dans l'appelation unicode sont
LATIN SMALL LETTER I WITH DIAERESIS
RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
INVERTED QUESTION MARK
quand il sont "mappés" en iso-8859-1

(pour faire simple)

> php, sql, affichage, et probablement ton problème
Pour qui comprend les encodages, le problème est assez clair. On pioche dans une base de données des strings qui sont encodés sous une certaine forme. L'outil qui pioche (ici, PHP, mais cela peut être autre chose, Python par ex) doit convertir l'encodage de ce qui est pioché en un string encodé de façon qu'il corresponde à l'encodage de l'affichage.

Ne pas hésiter à perdre un peu de temps à l'étude des encodages. C'est un problème fondamental.
Qui ne les comprends pas, aura toujours des ennuis.

#15 Le 08/05/2007, à 12:45

valAa

Re : [mi - Résolu]trouver l'encogade d'un fichier

salut aleph !

merci pour ce message qui me donne des pistes pour comprendre et apprendre à (bien) utiliser les encodages.

je suis tout à fait conscient que la situation dans laquelle je me retrouve avec ce projet est uniquement due à des bidouillages absolument pas maîtrisés, et en aucun cas au changement de plate-forme (notamment windows-linux).
je m'en doutais dès le début, et pour me le prouver un reboot sous windows n'a rien donné (comme je m'y attendais).

Ne pas hésiter à perdre un peu de temps à l'étude des encodages. C'est un problème fondamental.
Qui ne les comprends pas, aura toujours des ennuis.

j'y vais de ce pas tongue
quoiqu' étant en réalité un agronome et non un informaticien, cette connaissance n'est pas indispensable à ma survie professionnelle (contrairement aux bestiaux big_smile ).
par contre, en tant que codeur amateur et totalement autodidacte, ça peut en effet me servir, d'autant plus qu'il arrive à certains de mes outils d'être utilisés smile

ça fait longtemps que ces lacunes me pendaient au nez... je m'y colle dès que j'ai fini de récupérer mon projet.

Dernière modification par valAa (Le 08/05/2007, à 12:57)

Hors ligne

#16 Le 08/05/2007, à 15:30

aleph

Re : [mi - Résolu]trouver l'encogade d'un fichier

Petit exercice utile et assez rapide.

1) Dans un éditeur, créer un fichier html contenant un texte simple comme Ces trois éléphants coûtent 4 €. Point. Ne pas spécifier de balise charset=xxx.. Sauvegarder deux fois le fichier, une fois encodé en iso-8859-1 et une fois en utf-8.

2) Visualiser ces fichiers avec IE, Firefox ou ... et jouer avec les options d'affichages (menu Encodage des caractères), regarder ce qui ce passe à l'écran. C'est l'encodage de sortie, l'encodage utilisé pour l'affichage qui n'est pas le même que l'encodage des fichiers.

3) Répéter l'opération précédente en spécifiant le charset dans les deux fichiers.

4) Répéter l'opération précédente en spécifiant volontairement un charset qui ne correspond pas à l'encodage de sauvegarde, cad charset=iso-8859-1 pour le fichier sauvegardé en utf-8 et inversément charset=utf-8 pour le fichier sauvegardé en iso-8859-1.

Bonne chance.