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 :

encodage ? en tout cas caractères spéciaux


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut encodage ? en tout cas caractères spéciaux
    Bonjour à tous,

    j'ai un souci avec les caractères spéciaux. en fait, j'ai une fonction qui me permet d'interroger (à l'aide de xmlHttpRequest) une page php pour faire un UPDATE sur un table.

    en fait, dans la clause WHERE je fais l'update par rapport à un libellé. ce libellé est envoyé par XMLHttpRequest et si il posséde des accents par exemple, ils sont remplcés par "é".

    mon notepad enregistre par défaut en ANSI, j'ai donc changé pour UTF-8. j'ai ensuite ajouté le charset UTF-8 à ma balise <script>. j'ai également de remplacer les accents par leurs valeurs octals avec un replace. enfin, j'ai ajouté la balise META content-type. rien à faire.

    voici le contenue de ma balise <script> :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <script language="Javascript" charset="UTF-8">
     
    		function get_Xhr()
    		{
     
    			var x;
    			if(window.XMLHttpRequest)
    			{
    				x = new XMLHttpRequest();
    			}
    			else if(window.ActiveXOject)
    			{
    				try
    				{
    					x = new ActiveXObject("Msxml2.XMLHTTP");
    				}
    				catch(e)
    				{
    					try
    					{
    						x = new ActiveXObject("Microsoft.XMLHTTP");
    					}
    					catch(el)
    					{
    						x = null;
    					}
    				}
    			}
    			else
    			{
    				alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest\nVeuillez le mettre ࡪour");
    			}
    			//alert('getXHR(), ' + x);
    			return x;
    		}
     
    		function updateTask()
    		{
    			//alert('updateTask()');
    			var xhr =get_Xhr(); 
     
    			//alert('readyState ,' + xhr.readyState);			
    			xhr.onreadystatechange = function()
    			{
     
    				//alert('readyStateChange ,' + xhr.readyState);	
    				if(xhr.readyState == 4)
    				{
    					var anwer = xhr.responseText;
    					if(anwer == 0)
    					{
    						document.getElementById("returnbox").innerHTML = "la mise à jour a échouée";
    					}
    					else
    					{
    						document.getElementById("returnbox").innerHTML = "mise à jour réussie";
    					}
    					//alert('innerHTML');
    				}
    			}
     
    			var text = document.getElementById("daily_id_tache").value;
    			var reg = new RegExp("(é)", "g");
    			var text2 = text.replace(reg,"\351");
    			var reg = new RegExp("(è)", "g");
    			text2 = text.replace(reg,"\350");
    			var reg = new RegExp("(ê)", "g");
    			text2 = text.replace(reg,"\352");
    			var reg = new RegExp("(à)", "g");
    			text2 = text.replace(reg,"\340");
    			// alert('text : ' + text);
     
    			xhr.open("POST", 'validateTasks.php', false);
    			xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    			var str = "daily_heures="+document.getElementById("daily_heures").value+"&daily_id_tache="+text2+"&daily_id_projet="+document.getElementById("daily_id_projet").value;
    			xhr.send(str);
    			//alert('fin');
    		}
    en espérant que vous pourrez me venir en aide. merci de m'avoir lu

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Que donne le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // alert('text : ' + text);
    après les replace() ? Il a les bon caractères ?

    Sinon, je ne vous conseille pas l'UTF-8. J'ai tjs eu des problèmes avec lui. J'y préfère le windows-1252. D'ailleurs, l'encodage du script, c'est une chose mais quel est l'encodage de la page qui appelle ce script ?
    C'est peut-être après le send qu'il change d'encodage.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    je suppose que sur ta page tu as une balise meta charset utf-8...

    soit tu demandes au serveur de generer de l'utf8 avec un header charset utf8 en php par exemple si tu utilise php
    soit tu peurt mettre un htaccess pour indique le default charset du serveur
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut
    je vais me flagéler ! lol

    depuis au moins 1 heure je boss sur une copie du fichier qui n'est pas sur mon serveur. je me disais aussi que mes changements n'avait pas beaucoups d'incidences. on va dire que c'est Vendredi (moi je le dis).

    bon alors après avoir passé le plus de chose possible en UTF-8, je me retouve avec des "?" dans de losanges partout. j'ai également essayé windows-1252, mais ça change rien par rapport à l'ANSI.

    alert('text : ' + text); renvoi mes libellés (sélectionné dans une liste déroulante) bien écrit avec les accents. sit le replace ne fonctionne pas, soit les octales sont interprétés.

    SpaceFrog, oui j'ai bien défini la meta. je vais voir pour le htaccess, mais l'UTF-8 je crois que ça va pas me plaire lol

  5. #5
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    C'est une DB MySQL ? De quelle collation et encoding est la colonne libellé ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    il faut juste que tout coincide

    si ton header de page est en utf8 , le header de php doit aussi etre en utf8
    eventuellement aussi les fichiers js etc au format utf8 ou iso enfon tout au même format
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut
    vermine, c'est bien une base MySQL, mais qu'entends tu par collation ?

    sinon, voici le CREATE de ma table contenant le libelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE IF NOT EXISTS `tache` (
      `ID` int(11) NOT NULL auto_increment,
      `libelle` varchar(100) NOT NULL,
      `dateajout` text NOT NULL,
      `fk_id_projet` int(11) NOT NULL,
      `fk_id_cattache` int(11) NOT NULL,
      PRIMARY KEY  (`ID`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4388 ;
    SpaceFrog, j'ai mi tout ce que je pouvais en UTF-8 sauf le serveur (avec le htaccess) et la BDD. mais je n'ai pas de problèmes d'habitude (quand j'utilise pas javascript :p), c'est seulement le passage dans XMLHttpRequest qui met le bazard.

    enfin mon boss m'a dit de pas me prendre la tête et d'enlever les accents dans les libellés. ces derniers son généré automatiquement et l'appli va rester interne donc c'est pas là mort.

    mais si vous avez d'autres idée je suis preneur.

    j'ai pas encore eu e temps d'ajouter le htaccess et je crois que ça se fera pas tout de suite, parce que ce projet à coupé une autre projet (dotnet) urgent que je reprend tout de suite.

    merci de votre aide en tout cas

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    CHARSET=latin1

    utf8-general ...

    sinon faudra faire du utf8_decode en sortie de table
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/10/2006, 11h05
  2. [MySQL] Caractères spéciaux - encodage
    Par billoum dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/09/2006, 18h48
  3. Probleme d'encodage des caractères spéciaux
    Par pacoulitou24 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 20/06/2006, 16h47
  4. Réponses: 15
    Dernier message: 24/02/2006, 14h17
  5. Probléme encodage caractéres spéciaux MYSQL
    Par FoxLeRenard dans le forum Installation
    Réponses: 1
    Dernier message: 20/02/2006, 12h10

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