IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comportement bizarre de UTF-8 ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Par défaut Comportement bizarre de UTF-8 ?
    Bonjour !

    je voudrais bien vous demander votre avis pour un petit mystère :
    J'ai une function qui affiche un texte, ou un autre, selon le choix d'utilisateur.
    (Ces différents textes sont directement à l'intérieur de cette function, on y accède par des if...)

    • Ca marche très bien si cette function est déclaré sur la page html elle même.
    • Ca affiche des losanges noirs avec "?" si je mets cette function sur un fichier externe.


    La page html contient la balise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    Dans le cas ou je choisi dans le navigateur (Safari) encodage du texte : "Occidental (Mac OS Roman)", tout s'affiche bien. Si il est réglé "par défaut" ou sur "UTF-8", ça ne marche pas...

    Le problème c'est arrangé si j'ai remplacé à la main par ex. "ê" par "\u00EA". Bien, mais je préfère d'éviter de tout remplacer manuellement...!

    J'ai aussi essayé de rajouter un encodage suivant sur le fichier externe, mais ça a donné juste d'autres bizzarreries :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    //	Librairie by The Rubik's Man © 2005-2006
     
    var UTF8_tool = function (){}
     
    	UTF8_tool.encode = function (string)
    	{
    		var string = string.replace(/\r\n/g,"\n");;
    		var utftext = "";
    		for (var n = 0; n < string.length; n++)
    		{
    			var c = string.charCodeAt(n);
    			if (c < 128) 
    			{
    				utftext += String.fromCharCode(c);
    			}
    			else if((c > 127) && (c < 2048))
    			{
    		utftext += String.fromCharCode((c >> 6) | 192);
    				utftext += String.fromCharCode((c & 63) | 128);
    			}
    			else
    			{
    				utftext += String.fromCharCode((c >> 12) | 224);
    				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
    				utftext += String.fromCharCode((c & 63) | 128);
    			}
    		}
    		return utftext;
      };
    (Avec cet encodage par ex "ê" devient "ê" dans le code et toujours n'importe quoi à l'affichage).

    Vous avez une idée d'ou vient le problème ?
    Merci infiniment d'avance !

    Tooomas

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    bonjour,

    est-ce que ton fichier html est bien enregitré au format UTF-8 sans BOM ?

    tu as passé ta page au validateur W3C ? il est possible que ça te mette des erreurs en évidance...

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Par défaut
    Eh bien...
    Ca avait donc bien à voir avec BOM.
    J'ai tout simplement copié toute la function avec ses textes dans du "Simple texte" (Mac) et je l'ai enregistré avec extension .js Ensuite, je l'ai integré dans mon site.

    Du coup, le texte dans le fichier .js a pris cet aspect là :

    "Youn?®s se pr?©cipite vers le v?©lo..."

    Ca marche, ça s'affiche bien. Mais, ça veut dire, que je doit toujours importer les textes du simple texte ? Je ne peut pas écrire directement dans mon fichier .js ?

    Il n'existe pas une function à coder ça en interne ? Comme la function d'encodage cité précedement ? Sauf que maintenant, j'ai pour un "ê" ça : ?™ ce qui est effectivement différent de la situation précedente.

    Disons que le problème est résolu, mais ce n'est pas du bricolage, ce que j'ai trouvé comme sollution ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    le problème vient du format de ton text.

    UTF-8 est le format utilisé par les anglais, donc a priori c'est normale qu'il gère mal les accents. Si ta page est en français, alors il faut que tu utilises le format iso-8859-1.

    Donc si ta page est en français, alors il faut insérer dans les balises <head> de ta page html :
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

    après, tu ouvres tes fichiers html et css avec le logiciel notepad++ et tu les enregistres en format AINSI (format => encoder en AINSI).

    Si ta page est anglaise, alors il faut rester en UTF-8. Donc il faut mettre :
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    et enregistrer tes fichiers (avec notepad++) en format UTF-8 sans BOM => après il faudra enlever tous les caractères de type européens (les accents pas exemple) car c'est normale il faut parler avec le meme type de langage que la langue utilisée.

    => j'espère t'avoir aidé...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Par défaut
    Ah, une bonne piste ! Surement. Je vais l'exploiter et je revindrai ici pour faire un petit compte rendu, pour que ça sert à tous le monde.

    Si je passe par UTF-8, c'est que mes pages devront être multiligue, occidental de tout sort + Europe de l'Est en même temps. Pas de moyen de simplifier...

    Merci Emcy !!!
    A+
    Tooomas

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    par contre, il me semble que le post devrait etre deplacé dans la section html...

    pour le code html, il faudrait que tu utilises ce système (ça te permettera d'afficher des accents dans un fichier codé en UTF-8...je crois pas qu'il y ait d'autre solution) :
    http://nephi.unice.fr/CoursHTML/coursp6.php

    par contre pour le javascript, je ne sais pas comment il faut faire (ex: afficher des accents dans une textebox alors que le fichier est codé en UTF-8)

Discussions similaires

  1. Comportement bizarre de mes FPS
    Par Ekinoks dans le forum OpenGL
    Réponses: 7
    Dernier message: 22/08/2005, 15h14
  2. xsl:test .... avec comportement bizarre
    Par Blue LC dans le forum XMLRAD
    Réponses: 2
    Dernier message: 10/06/2005, 13h56
  3. [ACESS][MEMO][ISNULL]Comportement bizarre
    Par seb.49 dans le forum ASP
    Réponses: 2
    Dernier message: 09/06/2004, 10h44
  4. [HttpClient] comportement bizarre, saute des catch()...
    Par iubito dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 04/02/2004, 15h25
  5. [Sybase] Comportement bizarre d'une table
    Par sdozias dans le forum Sybase
    Réponses: 4
    Dernier message: 03/02/2004, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo