Scite et caractères non désiré...

ViPHP
ViPHP | 3607 Messages

26 sept. 2007, 09:27

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:

Code : Tout sélectionner


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!!!

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

26 sept. 2007, 12:05

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).

ViPHP
ViPHP | 3607 Messages

26 sept. 2007, 12:07

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?

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

26 sept. 2007, 12:26

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');

ViPHP
ViPHP | 3607 Messages

26 sept. 2007, 12:33

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 :oops:
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)

ViPHP
fab
ViPHP | 2657 Messages

26 sept. 2007, 12:45

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 )
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

26 sept. 2007, 13:58

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.

ViPHP
ViPHP | 3607 Messages

26 sept. 2007, 14:17

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 :roll: )

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

26 sept. 2007, 14:27

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 :

Code : Tout sélectionner

SET NAMES utf8

ViPHP
ViPHP | 3607 Messages

26 sept. 2007, 14:41

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?

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

26 sept. 2007, 15:00

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"]
Modifié en dernier par Hubert Roksor le 26 sept. 2007, 21:35, modifié 2 fois.

ViPHP
ViPHP | 3607 Messages

26 sept. 2007, 19:02

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 ;) )

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

26 sept. 2007, 20:05

Ta base est en utf-8, mais tes tables ?

ViPHP
ViPHP | 3607 Messages

27 sept. 2007, 11:22

Je répondrais ce we, j'ai pu mon ordi là ;)

ViPHP
ViPHP | 3607 Messages

01 oct. 2007, 11:48

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...