Soucis d'encodage entre deux forums étant à l'identique

Voir le sujet précédent Voir le sujet suivant Aller en bas

Résolu Soucis d'encodage entre deux forums étant à l'identique

Message par demeter1 le Mar 19 Nov 2013 - 20:59

Bonjour à tous,
Cherchant à comprendre un soucis concernant un js qui fonctionne parfaitement bien sur mon forum test et qui présente un beug sur mon forum, j'ai eu la curiosité d'aller vérifier l'encodage des deux forums grâce à w3.org.

Surprise Question 
http://altitudetropicale.forums-actifs.com        Encoding: windows-1252

http://crevettes-passion.forumgratuit.org         Encoding: utf-8

Les deux forums sont à l'identique au niveau des templates , des js et des pages html . Il n'y a rien dans Description du site sur les deux forums et rien dans la page d'accueil.

Comment expliquer cette différence d'encodage entre deux forums qui ont les mêmes modifications et comment résoudre le soucis d'encodage sur mon forum???????

Merci par avance pour vos réponses.


Dernière édition par demeter1 le Jeu 21 Nov 2013 - 17:04, édité 1 fois

demeter1
+ Hyperactif +

Masculin
Messages : 8103
Inscrit(e) le : 23/01/2009

http://altitudetropicale.forums-actifs.com/index.forum
demeter1 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Soucis d'encodage entre deux forums étant à l'identique

Message par demeter1 le Mer 20 Nov 2013 - 20:41

up.

demeter1
+ Hyperactif +

Masculin
Messages : 8103
Inscrit(e) le : 23/01/2009

http://altitudetropicale.forums-actifs.com/index.forum
demeter1 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Soucis d'encodage entre deux forums étant à l'identique

Message par Ea le Mer 20 Nov 2013 - 21:01

Bonjour,


Les forums créés avant ( je ne m'en souviens plus exactement mais ça doit être dans ces eaux-là ) avril 2009 avaient un encodage localisé ( si le forum est en français on a du windows-1252, si il est en arabe windows-1256, ... ).

Ceux après ont l'encodage utf-8.

Il suffit de regarder l'attribut charset de la balise :

Code:
<meta http-equiv="content-type" content="text/html; charset=windows-1252" />

dans le code source d'un forum pour connaître son encodage.

Forumactif étudiait la possibilité de transcoder tout les forums qui ne le sont pas vers utf-8 mais jusqu'ici ça n'a pas été réalisé. Donc à ce moment présent si on a pas l'encodage utf-8, il n'y a pas moyen d'y passer.

Cordialement.

Ea
Aidactif
Aidactif

Messages : 23418
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Soucis d'encodage entre deux forums étant à l'identique

Message par demeter1 le Mer 20 Nov 2013 - 21:19

Bonjour Ea,
Merci pour ces informations.

Cela pourrait il expliquer les soucis que rencontre avec certains scripts qui fonctionnent à la perfection sur mon forum test mais  qui beuguent littéralement sur mon forum  Question .

Ce dernier ayant 5/6 ans d'existence, cela pourrait expliquer cette difficulté à transposer des scripts d'un forum à l'autre.

Par exemple avec le script de cette demande d'aide  :
http://forum.forumactif.com/t360291-outils-de-moderation-depuis-la-liste-des-sujets

demeter1
+ Hyperactif +

Masculin
Messages : 8103
Inscrit(e) le : 23/01/2009

http://altitudetropicale.forums-actifs.com/index.forum
demeter1 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Soucis d'encodage entre deux forums étant à l'identique

Message par Ea le Mer 20 Nov 2013 - 22:31

Cela posera problème pour les envois de donnée et formulaire en javascript ( par exemple par ajax ).

Dans ma librairie ( loin d'être finie ) :
http://s301826463.onlinehome.fr/tools.core/0.1/FA.js

j'ai une fonction _F.post.modify qu'on devrait pouvoir utiliser comme cela :

Code:
var nouveau_titre = "hello world évier";
var id_du_message_to_modify = 42;

_F.post.modify(id_du_message_to_modify, function(key){ if(key=="subject") return nouveau_titre; });

pour que ça fonctionne ( en tout cas je n'ai pas vu de problème mais c'est possible qu'il y en ait ) j'avais du m'amuser à faire deux fonctions :

Code:
    /**
    * Transforme un objet json en url query string.
    * @param {Object} obj - Objet à sérialiser.
    * @param {Function} modifier - Fonction permettant de modifier des champs.
    * @returns {String} Sérialisation de l'objet.
    */
    param: function(obj, modifier) {
      var buildParams= function(prefix, obj, traditional, add) {
        var name;
        if (jQuery.isArray(obj)) {
          jQuery.each(obj, function(i, v) {
            if (traditional || rbracket.test(prefix)) {
              add(prefix, v);
            } else {
              buildParams(prefix + "[" + (typeof v === "object" ? i : "") + "]", v, traditional, add);
            }
          });
        } else {
          if (!traditional && jQuery.type(obj) === "object") {
            for (name in obj) {
              buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
            }
          } else {
            add(prefix, obj);
          }
        }
      }
      var prefix, s = [], add = function(key, value) {
        if(modifier)
          if((value=modifier(key, value)) === undefined)
            return;

        value = jQuery.isFunction(value) ? value() : value == null ? "" : value;
        s[s.length] = _F.util.encodeURIComponent(key) + "=" + _F.util.encodeURIComponent(value);
      };
      if (jQuery.isArray(obj) || obj.jquery && !jQuery.isPlainObject(obj)) {
        jQuery.each(obj, function() {
          add(this.name, this.value);
        });
      } else {
        for (prefix in obj) {
          buildParams(prefix, obj[prefix], undefined, add);
        }
      }
      return s.join("&").replace(/%20/g, "+");
    },
    /**
    * Encode une chaîne pour un formulaire suivant l'encodage du forum.
    * @param {String} str - Chaîne à encoder.
    * @returns {String} Chaîne encodée.
    */
    encodeURIComponent: function(str) {
      if(_F.page.charset().toUpperCase()!='UTF-8')
        return encodeURIComponent(escape(str).replace(/%u[A-F0-9]{4}/g, function(x){ return "&#"+parseInt(x.substr(2),16)+";"; })).replace(/%25/g,'%');
      else
        return encodeURIComponent(str)
    }

qui permettent d'encoder un formulaire ( et l'encode d'une façon si c'est en utf-8 et d'une autre sinon ).

La ligne pour l'encodage non-utf8 :

Code:
encodeURIComponent(escape(str).replace(/%u[A-F0-9]{4}/g, function(x){ return "&#"+parseInt(x.substr(2),16)+";"; })).replace(/%25/g,'%');

je l'ai réalisée par essais et erreurs donc je ne miserais pas mon pot de nutella dessus, mais dans mes tests ça semblait fonctionner.

Cordialement.

Ea
Aidactif
Aidactif

Messages : 23418
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Soucis d'encodage entre deux forums étant à l'identique

Message par demeter1 le Jeu 21 Nov 2013 - 17:03

Merci Ea pour toutes ces explications.
Je vais conserver ce topic en signet pour m'en servir dés que je rencontrerai un soucis avec un formulaire.

Bonne journée à vous.


demeter1
+ Hyperactif +

Masculin
Messages : 8103
Inscrit(e) le : 23/01/2009

http://altitudetropicale.forums-actifs.com/index.forum
demeter1 a été remercié(e) par l'auteur de ce sujet.

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum