Page 1 sur 2
Scite et caractères non désiré...
Posté : 26 sept. 2007, 09:27
par jojolapine
Bonjour à tous,
J'ai réinstaller scite il y a pas longtemps, et je me trouve face à un problème...
Il me met des caractères à chaque début de fichier, voici à quoi il ressemble:
et je ne trouve nul part comment régler ce problème...
Si vous connaissez scite, et que vous avez déja eu à régler ce problème...
Merci d'avance!!!
Posté : 26 sept. 2007, 12:05
par naholyr
Il s'agit du BOM, ajouté pour détecter un fichier en UTF-8. Si tu travailles en UTF-8 il vaut mieux travailler en mode "cookie" je crois (sans le BOM en tous cas).
Posté : 26 sept. 2007, 12:07
par jojolapine
C'est ce que j'avais cru lire ailleurs, mais comment faire pour enlever ce "BOM", ou travailler en "cookie" ?
edit: alors j'ai trouvé le mode "cookie", ça à l'air de fonctionner...
Mais est-ce que ça change quelque chose pour mon site? le site sera toujorus en utf-8?
Posté : 26 sept. 2007, 12:26
par Hubert Roksor
le site sera toujorus en utf-8?
Ton site est en UTF-8 si tu le précises dans les en-têtes, sinon rien n'est garanti (et au passage tu ouvres la porte à certaines failles de sécurité).
header('Content-Type: text/html;charset=utf-8');
Posté : 26 sept. 2007, 12:33
par jojolapine
euh... on est obligé de passer les entêtes en php?
si j'ai un
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ça suffit pas?
En fait, j'ai commencé mon site en ISO-8859-1 et puis j'avais quelques problèmes d'accents, et je me suis dit, tient pourquoi pas passer en utf-8, c'est peut-être pas une bonne chose... j'en sais strictement rien
Toujours est-il que par exemple le SiteDuZero est codé entièrement en utf-8...
Donc ça doit pouvoir se faire...
Après moi je n'en ai peut-être pas l'utilité (mon site est en français pour l'instant, sera peut-être un jour en anglais, mais jamais en chinois)
Posté : 26 sept. 2007, 12:45
par fab
tu sais en quoi son encodés tes fichiers? lors de l'enregistrement de ton fichier ( celui qui contient le code ) tu peux souvent choisir suivant les éditeurs l'encodage de ton fichier si tu veux qu'il l'affiche e nut8 d'apres le charset faut aussi que le fichier contenant soit en utf8 ( enfin je crois )
Posté : 26 sept. 2007, 13:58
par Hubert Roksor
euh... on est obligé de passer les entêtes en php?
Disons qu'il existe une bonne (correcte) façon de faire, et que d'autres techniques permettent d'aboutir à peu près au même résultat. La bonne façon, c'est d'indiquer le charset dans les en-têtes HTTP. Sinon, le navigateur est obligé de
deviner quel est l'encodage du fichier et si pour une raison X le navigateur décide que ta page est en SJIS alors il ne saura même pas qu'elle contient une balise <meta>.
Pour répondre à la question, non, on n'est pas
obligé, ça
peut fonctionner avec une balise <meta>, avec un BOM ou avec rien du tout.
Posté : 26 sept. 2007, 14:17
par jojolapine
Ok je comprend un petit peu mieux...
J'ai mis dans mon fichier d'include un header(...), et ça à l'air de fonctionner à peu près...
Par contre pour les données qui viennent de la bdd.. (je dérive un peu le sujet.
ma bdd est en utf8_unicode_ci, et si je ne met pas uft8_encode sur mes résultats, je pert les caractères spéciaux...
Je ne m'y retrouve plus trop là...

, je sais pas si je vais pas repasser en iso

)
Posté : 26 sept. 2007, 14:27
par Hubert Roksor
Il se peut que ton serveur SQL soit configuré pour communiquer en ISO-8859-1. Pour être sûr de récupérer tes données en UTF-8, exécute cette requête en début de session :
Posté : 26 sept. 2007, 14:41
par jojolapine
Je pense que mon serveur est bien en utf8
# Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
Interclassement pour la connexion MySQL:
utf8_unicode_ci
J'ai malgrès tout exécuté ta requête, mais ça n'a pas l'air de changer qqch...
Pour récapituler tout mes encodages:
En haut de toutes les pages php, j'ai
header('Content-Type: text/html;charset=utf-8');
puis en html:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
scite est en "utf8-cookie"
et pour la base de donnée c'est au dessus...
Je viens de me rendre compte d'une chose, en utilisant l'outil "informations sur la page" de firefox, j'ai lu ceci:
Accept-Charset: ISO-8859-1,utf-8,q=0.7,*;q=0.7
Content-Type: text/html; charset=utf-8
Est-ce que le fait que l'iso soit avant l'utf8 dans ma requête pose un problème?
Posté : 26 sept. 2007, 15:00
par Hubert Roksor
Tu peux vérifier si ta connexion (pas le serveur, je parle bien de la connexion, la méthode de communication) est bien en UTF-8 en insérant le caractère é dans une table à l'aide de phpMyAdmin (pour être sûr que l'insertion est correcte, puisqu'on sait que phpMyAdmin fonctionne) puis en récupérant le résultat dans ton script. Ensuite, tu regardes de quels octets est composé le résultat avec bin2hex(). En UTF-8 le résultat devrait être c3a9, en iso-8859-1 ce sera e9. [corrigé, c'est bien "e9"]
Posté : 26 sept. 2007, 19:02
par jojolapine
Alors voilà le résultat:
C'est grave docteur?
Donc apparemment, ce n'est ni utf8 ni iso?
Et sinon, où est-ce qu'on peut régler les paramètres de connexion (tient j'en profite pour dire que ej suis en local avec wamp, et pour dialoguer avec la bdd, j'utilise PDO, si ça peut servir

)
Posté : 26 sept. 2007, 20:05
par naholyr
Ta base est en utf-8, mais tes tables ?
Posté : 27 sept. 2007, 11:22
par jojolapine
Je répondrais ce we, j'ai pu mon ordi là

Posté : 01 oct. 2007, 11:48
par jojolapine
Bon alors,
de retour de we, je me repenche sur mon problème...
J'ai vérifié, que mes tables était en utf8_unicode_ci, et effectivement elles ne l'étaient pas, j'ai modifié la chose, donc j'ai ma base et mes tables qui sont en utf8_unicode_ci, mais ça ne marche toujours pas...
Peut-être qu'il faudrait que je recré la base et les tables ?
Je sais pas trop d'où ça peut venir...