Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Autres langages pour le Web > Coldfusion
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/07/2007, 22h09   #1
Invité de passage
 
Inscription : novembre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 4
Points : 3
Points : 3
Par défaut Perte des accents et autres caractères spéciaux.

J'ai fait un formulaire flash contenant quelques cftextarea et je voudrais que dès que l'utilisateur change de cftextarea ma base de donnée soit automatiquement mise à jour sans que l'utilisateur ai donc a valider quoi que ce soit. J'ai pour cela rajouté du code actionscript dans les onBlur de mes cftextarea malheureusement j'ai ce souci :

Si j'ordone le submit() des qu'un de mes cftextarea est modifié je suis donc obligé d'ouvrir le résultat dans une autre fenêtre ou frame or je veux que la mise à jour de la bdd soit transparente (dommage car dans ce cas la mise à jour de la base se fait corectement sans perte des caractères spéciaux).

L'autre solution était d'utiliser sendAndLoad() ou loadVariables(), j'ai reussi a utiliser ces deux fonctions avec succès et la bdd se met a jour automatiquement sans besoin de validation malheureusement tout mes accents et retour a la ligne sont perdus.

Comment puis-je faire pour ne pas perdre tout les caractères spéciaux ?

Merci à vous.
Yoann
pacific est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2007, 01h17   #2
Invité de passage
 
Inscription : novembre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 4
Points : 3
Points : 3
Je me répond à moi même puisque j'ai trouvé une solution et cela pourra peut-être servir à d'autres :

Je suis donc passé par loadVariables() et je passe donc mes données en argument dans l'URL (par ex 'modif.cfm?value=coucou'), par contre pour ne pas perdre les caractères spéciaux j'ai programmé une fonction qui converti ma chaîne de caractères en utf-8 sous la forme hexa, par example le symbole euro est %E2%82%AC.

Voici la formule, je suis parti d'une fonction bidon qui encodait un peu betement et je l'ai optimisé avec un while :

var string = 'texte à 1€ avec pleins de caractères bizares !';
var utftext = '';
for (var n = 0; n < string.length; n++)
{
var c = string.charCodeAt(n);
var t = '0123456789ABCDEF';
var utfpart = '';
if(c < 128)
{
utfpart = '%' + t.charAt(Math.floor(c / 16)) + t.charAt(c - (Math.floor(c / 16)) * 16);
}
else
{
var valeurComp = 64;
var valeurDecalA = 0;
var valeurDecalB = 6;
var valeurOR = 192;
do
{
valeurComp *= 32;
var d = 128 | c >> valeurDecalA & 63;
utfpart = '%' + t.charAt(Math.floor(d / 16)) + t.charAt(d - (Math.floor(d / 16)) * 16) + utfpart;
if(c < valeurComp)
{
d = valeurOR | c >> valeurDecalB;
utfpart = '%' + t.charAt(Math.floor(d / 16)) + t.charAt(d - (Math.floor(d / 16)) * 16) + utfpart;
}
valeurDecalA += 6;
valeurDecalB += 6;
valeurOR = valeurOR >> 1 | 128;
} while(c >= valeurComp);
}
utftext += utfpart;
}
loadVariables('UpdateBDD.cfm?textSaisie=' + utftext, this, 'POST');

Par contre je viens de me rendre compte en ecrivant ce message que du coup la longueur du texte de l'URL est limité à 256 caractères et que je ne pourrait donc pas transmettre des données trop longue...

Je laisse quand même la fonction qui pourra peut être servir à d'autres...

A+
Yoann Levet
pacific est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h33.


 
 
 
 
Partenaires

Hébergement Web