Bon(jour|soir) alsacréations !

Ma question à peut-être été postée vu qu'elle me parait bateau, mais bizarrement même google ne me renvoie pas de réponse claire/sûre... Enfin, il le problème vient peut-être de "l'interface chaise-clavier"

Je travaille en UTF-8, j'interroge ma base en utf8 dans laquelle mes données sont stockées en utf8_unicode_ci. Pas de problèmes.

Cependant, quand je télécharge les fichiers avec Dreamweaver, ce couillon me les convertit en "Europe de l'ouest" donc ISO-8859-1(5).

Ce n'est pas vraiment un problème, les fichiers que j'ouvre, je pense à les reconvertir, mais au final je vais avoir un site à 50% convertit et à 50% délaissé... Pas glop.

Ma question est donc : dans ce cas, j'ai un dossier avec des trouzaines de fichiers d'encodage incertain et je ne veux que de l'UTF-8 sans BOM à l'arrivée avant d'uploader sur le FTP (sans passer par Dreamweaver : principe de précaution)... Comment convertir en masse sous Windows ? Histoire d'éviter de passer par Notepad++ et "convertir le fichier", "enregistrer le fichier" x 1000

Merci beaucoup. Smiley smile

P.-S. : Je pense qu'une fois qu'une âme charitable aura donné la réponse, elle aura sa place dans les tips et astuces du site Alsacréations... Non ? Smiley cligne
Modifié par Niaa (07 Jun 2009 - 01:34)
Je teste ça tout de suite et je reviens t'embrasser ­­!

#Edit : Je n'ai pas l'impression qu'il soit parfaitement fiable : j'ai sélectionné une 80taine de fichiers et je lui ai demandé de les convertir, quand j'en ouvre un (un css que je n'ai pas touché depuis des mois), Dreamweaver me le trouve "europe de l'ouest"...

D'ailleurs, c'est très chiant : Dream me crée des lignes blanches entre chaque ligne de code sur des vieux fichiers :

@charset "utf8";



html, body, div, span, applet, object, iframe,

h1, h2, h3, h4, h5, h6, p, blockquote, pre,

a, abbr, acronym, address, big, cite, code,

del, dfn, em, font, img, ins, kbd, q, s, samp,

small, strike, strong, sub, sup, tt, var,

b, u, i, center,

dl, dt, dd, ol, ul, li,

fieldset, form, label, legend,

table, caption, tbody, tfoot, thead, tr, th, td {

	margin: 0;

	padding: 0;

	border: 0;

	outline: 0;

	font-size: 100%;

	vertical-align: baseline;

	background: transparent;

}


C'est inexpliquable et moche...

Je vais essayer d'apprendre à me servir de ton outil, merci en tous cas à toi de me l'avoir proposé !
Modifié par Niaa (06 Jun 2009 - 23:56)
Modérateur
Niaa a écrit :
quand j'en ouvre un (un css que je n'ai pas touché depuis des mois), Dreamweaver me le trouve "europe de l'ouest"...
Je peux me tromper mais je ne crois pas que Dreamweaver détecte l'encodage... sinon tu as bien paramétré l'encodage par défaut en utf8 ?

PS : ça veut dire que je n'aurai pas de bisou ? Smiley sweatdrop
upload/19579-dreamweave.png

Voici ce que j'ai dans le coin bas-droite de la fenêtre de dreamweaver.
C'est pourtant dingue qu'il n'existe aucun outil sous Windows fiable o.o

Il me semble que dans l'univers GNU/Linux / UNIX, il y a iconv (encore qu'on soit obligé de préciser l'encodage de départ des fichiers si ma mémoire est bonne).

Il faut à tout prix que je perde le temps de coder un outil qui fait tout ça... Si manipuler les bits n'est pas trop compliqué (parce que j'ai pas toute la vie non plus pour le faire)...

Bref, tant que mon site flirte avec la centaine de phps, je vais les passer à la main en UTF-8 et bien checker leur comportement pour voir ce qui les refait passer en ISO...

#EDIT : "T'es mon p'tit Jésus Christ perso" ! Depuis le temps que tu m'aides quasi exclusivement sur ce forum (à croire que tu ne dors jamais...) même quand je change de pseudo tu me retrouves Smiley rolleyes Bref, si tu as le droit... Smiley langue

#EDIT 2 : ça m'apprendra à pas savoir lire : Oui, Dream est en UTF-8 sans BOM par défaut, et pour les fichiers ne spécifiant pas d'encodage.
Modifié par Niaa (07 Jun 2009 - 00:25)
Modérateur
Niaa a écrit :
"T'es mon p'tit Jésus Christ perso" !
Smiley ravi

Perso je n'ai eu à faire ça qu'une seule fois (depuis j'ai paramétré DW pour qu'il encode tous les documents en utf-8 par défaut) et kaboom avait réglé la question sans problème.

Sinon j'avais bookmarqué d'autres pistes comme celles-ci (notamment un lien vers une version du programme iconv pour Windows.)
		<div id="contentdetails">
			<h2>Infographies</h2>
			<strong>Les J.O. de Suzumiya Haruhi</strong>
		</div>


voila scrupuleusement le contenu d'un fichier nommé : "contentdetail.php5" (destiné à être inclus bien sur)
je convertis ce fichier en Unicode en passant par Dreamweaver (Ctrl + J). En bas à droite, ça change. Je l'enregistre, je le ferme, je le rouvre... Il est en "Europe de l'ouest"... Je recommence la manip 5 fois d'affilée : même constat

#EDIT : Notepad++ me dit : ANSI. Quand je veux le convertir en UTF8 sans BOM, il me répond : "ANSI \o/"

Bref, je crois qu'il veut de l'Ansi... Ptet qu'il n'y a aucun caractère dépassant 128 aussi, du coup il ne peut pas faire la distinction... Mais du coup si je rajoutait un caractère à la con, je me demande dans quel format il me le prendrait...

#REEDIT : (je fais du foruming instantané ;p) : en effet, <>"/= sont bien dans l'ANSI... Donc il ne se pose pas la question quand je l'enregistre... Je vais essayer de jouer avec les accents.
Modifié par Niaa (07 Jun 2009 - 01:11)
Modérateur
Niaa a écrit :
je convertis ce fichier en Unicode en passant par Dreamweaver (Ctrl + J). En bas à droite, ça change. Je l'enregistre, je le ferme, je le rouvre... Il est en "Europe de l'ouest"... Je recommence la manip 5 fois d'affilée : même constat
Excuse-moi d'insister (lourdement ?) mais c'est le comportement "normal" si tu as indiqué dans tes préférences (Ctrl + J) / Catégorie "Nouveau document" : Codage par défaut : "Europe de l'Ouest" et coché Utiliser à l'ouverture de fichiers ne spécifiant pas de codage.
Bonjour,

À vue de nez, le problème se situe du côté de l'interface chaise-clavier. Mais il est vrai que, dans le cas présent, cette dernière n'est pas très aidée 1) par sa méconnaissance des mécanismes d'encodage des caractères et 2) par les indications données les outils utilisés.

Bon, après avoir dit ça il va falloir que je détaille.

Les trucs à savoir

1. Le seul moyen fiable pour un programme de savoir à quel encodage il a affaire en recevant un fichier ou un flux de données, c'est qu'on lui annonce clairement quel est l'encodage, et sans erreur bien sûr. Lorsque Dreamweaver ou un autre éditeur de code ouvre un fichier, la seule information disponible sur l'encodage est, si elle existe, celle qui pourra être présente comme métadonnée ou commentaire dans le contenu du fichier lui-même. Via une balise META en HTML, un commentaire du type # coding: blabla en Python, un @charset "blabla" en CSS, etc. Ce type d'information n'est pas toujours disponible, surtout que même pour les langages où ça existe... eh bien la présence de ce genre d'information n'est pas obligatoire.

2. Un éditeur de code (ou autre outil) qui ouvre un fichier dans lequel il n'y a pas d'information sur l'encodage utilisé a donc deux options: a) utiliser un paramètre par défaut («si je ne sais pas, eh bien on va dire que c'est de l'ISO-8859-15» par exemple) et b) utiliser un algorithme de détection qui va examiner le contenu du fichier et voir s'il peut deviner l'encodage grâce à ça, avec une fiabilité suffisante. Pour information, un navigateur web tel que Firefox va utiliser l'option a par défaut, mais peut aussi utiliser l'option b (algorithme de détection) si on l'active dans les préférences.

3. Lorsqu'un éditeur de code tel que Dreamweaver ouvre un fichier, il ne modifie pas ce fichier. Tant que tu ne sauvegardes aucune modification.

4. L'encodage affiché par l'éditeur de code n'est pas celui du fichier. Enfin la plupart du temps si, ça correspondra, mais dans l'absolu cette information correspond à ceci: «je pense que le fichier est dans l'encodage suivant, et je propose d'utiliser cet encodage pour enregistrer les modifications».

5. Un des encodages les plus anciens et les plus limités est l'ASCII. Par souci de compatibilité, beaucoup d'encodages créés ensuite ont été conçus comme des extensions de ASCII. C'est le cas de ISO-8859-1 par exemple, ou encore de Windows-1252 ou de MacRoman. Quant à UTF-8, le décrire comme une extension de ASCII serait extrêmement réducteur, mais cet encodage est aussi conçu pour être compatible ASCII. C'est à dire qu'un fichier qui ne contient que des caractères ASCII sera exactement le même si on l'enregistre en ASCII, ISO-8859-1 ou UTF-8.

Supposition hasardeuse

Je dirais que ceux de tes fichiers qui sont interprétés en ISO-8859-1 (Europe de l'Ouest) sont des fichiers qui ne contiennent que des caractères ASCII (caractères de base de l'anglais, pas de caractères accentués ou typographiques particuliers). C'est typiquement ce que l'on peut obtenir comme résultat avec des fichiers de templates, des fichiers de code en PHP ou autre langage, ou des fichiers CSS.

Supposition un peu moins hasardeuse en complément: ISO-8859-1 (Europe de l'Ouest) est l'encodage par défaut dans ta configuration de Dreamweaver. Si cet encodage par défaut était UTF-8, les fichiers compatibles ASCII seraient affichés comme étant en UTF-8.

En mettant tout ça bout à bout...

- Tu as un fichier qui ne contient que des caractères ASCII, et pas de marqueur spécifique pour l'encodage.
- Tu ouvres ce fichier avec Dreamweaver.
- Dreamweaver tente de déterminer l'encodage du fichier d'après son contenu. Comme ce contenu est en ASCII, il sait que l'encodage spécifié pour la création du fichier peut être n'importe quel encodage compatible ASCII, c'est à dire quelques dizaines de possibilités au bas mot. Ne pouvant trancher, il sélectionne son encodage par défaut, qui est compatible ASCII.
- Ça ne change strictement rien à ton fichier, bien sûr.
- Par contre, si tu saisis des caractères non-ASCII et que tu enregistres en gardant «Europe Occidentale» comme encodage, alors là oui ton fichier n'est plus en UTF-8.

Bon, cela dit ma supposition hasardeuse ci-dessus peut être fausse. Auquel cas soit Dreamweaver est bugué, soit c'est ma propre interface chaise-clavier qui déconne.
J'étais arrivé à peu près aux mêmes conclusions que toi (voir mes #EDIT en pagaille ci dessus) à ceci près que je supposais sans connaitre contrairement à toi.

Par contre, Dream est bien configuré pour prendre par défaut l'UTF-8 comme le montre la capture ci dessous (il est également possible que je n'ai pas trouvé la "vraie" option)
upload/19579-d2.png

Egalement : j'ai des fichiers CSS contenant absolument aucun caractère sortant de Latin-1... En fait, ils sont même tous ANSI. D'ailleurs c'est ce que me fait remarquer Notepad++ quand je lui demande. Par contre Dream me les ouvre en tant que document Unicode (UTF-8) (voir screenshot dans un de mes précédents messages)

Il est vrai que dans le corps du fichier CSS, je lui précise l'@charset. Je ne pensais pas qu'il lisait (et même : avait besoin de lire) l'information dans le contenu que j'ai moi même écrit.

Merci Florent de t'être également penché sur mon problème.

Je pense que je peux mettre [ resolu ] à moins que quelqu'un ait quelque chose à ajouter ? Et puis je pourrais aller me coucher l'esprit libre Smiley ravi

Bonne nuit à vous deux !
Modifié par Niaa (07 Jun 2009 - 01:33)
Note en passant: ANSI n'est pas un encodage. Notepad++ dit que si, mais c'est parce qu'il raconte des conneries. Ne pas se fier à Notepad++ pour les encodages. Pour Dreamweaver, je ne sais pas trop, j'ose espérer qu'un tel logiciel qui fait référence utilise des termes qui veulent dire quelque chose (mais déjà le «Europe Occidentale» dans un logiciel technique, je trouve ça un peu limite...).