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

ASP Discussion :

Problème migration iso-8859-1 vers utf-8


Sujet :

ASP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Points : 49
    Points
    49
    Par défaut Problème migration iso-8859-1 vers utf-8
    Bonjour,

    J'ai un site web en ASP classique et je désire maintenant pouvoir afficher le site web en Chinois. Pour ce faire, je dois tout changer l'encodage des pages pour utf-8 plutôt que l'iso-8859-1 qui est actuellement utilisé.

    Mon problème est le suivant, lorsque l'internaute lance une page, le site web fait des requêtes http à un autre serveur distant (application en ASP classique aussi) en utilisant un objet winhttprequest en utilisant le type MIME application/x-www-form-urlencoded.
    Depuis que j'ai modifié l'encodage de mes pages, le serveur distant qui reçoit les requêtes envoyées par le serveur web n'enregistre plus les caractères accentués correctement car Server.URLEncode("é") donnait "%9E" quand le site web était iso-8859-1, mais maintenant ça donne "%C3%A9" ce qui fait que sur le serveur distant, il décode en "é" au lieu de "é".

    Y aurait-il moyen d'indiquer au serveur distant que ma requête est encodée en utf-8 et qu'il doit donc décoder utf-8 ? J'ai essayé de mettre le header ci-dessous mais ça n'y change rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    httpReq.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
    Si possible il serait préférable que l'administrateur du serveur distant n'ait pas à mettre à jour son application.

    La question fondamentale de ce problème est, comment indique-t-on à un serveur en quel charset est fait la requête ? Le client (exemple un navigateur) détecte bien automatiquement le charset de la réponse du serveur, alors pourquoi pas l'inverse ?

    Merci d'avance !

  2. #2
    Membre expérimenté
    Avatar de kaiser59
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 264
    Points : 1 350
    Points
    1 350
    Par défaut
    Salut,

    Pour un site chinois l'utf-8 ne correspond pas... Utf-8 c'est pour les caractères latin mais sans les accents, si tu regardes les sites chinois par exemple chinatv tu verras qu'ils utilisent le charset suivant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    text/html; charset=gb2312
    tout comme pour le japonais qui correspond à
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    text/html; charset=Shift_JIS

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    Désolé mais je ne suis pas d'accord avec ça, utf-8 supporte les caractères de toutes les langues et c'est devenu le standard pour les sites web. De toute façon le problème ne réside pas dans le choix du charset.

  4. #4
    Membre expérimenté
    Avatar de kaiser59
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 264
    Points : 1 350
    Points
    1 350
    Par défaut
    Soit, mais je ne comprend pas trop,

    J'ai un site web en ASP classique et je désire maintenant pouvoir afficher le site web en Chinois. Pour ce faire, je dois tout changer l'encodage des pages pour utf-8 plutôt que l'iso-8859-1 qui est actuellement utilisé.


    si tu veux afficher ton site en chinois en principe, on ajoute un dossier (ou sous-domaine) qui reprend le site mais écrit dans la langue étrangère...

  5. #5
    Expert éminent
    Avatar de kdmbella
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 799
    Points : 7 039
    Points
    7 039
    Par défaut
    Citation Envoyé par kaiser59 Voir le message
    Soit, mais je ne comprend pas trop,





    si tu veux afficher ton site en chinois en principe, on ajoute un dossier (ou sous-domaine) qui reprend le site mais écrit dans la langue étrangère...

    cette méthode est trop fastidieuse cella revient a developper 3 fois le meme site si l'on veux 3 langue or chaque language propose des solutions comme stockée les données dasn plusieurs langues et garder le meme site et ainsi en fonction de la langue le site ira chercher l'information correspondante ou alors l'usage des fichiers ressources pour chaque langue (cas de asp.net)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    Ok je reformule:
    j'ai une application asp (client) dont les pages sont encodées en utf-8 qui envoi une requête avec winhttp à une autre application asp (serveur) dont les pages sont encodées différement (windows-1252 ou iso-8859-1 par exemple)

    Comment faire pour que l'application appelée décode les paramètres envoyés en post de la bonne façon ? On doit bien pouvoir indiquer au serveur en quel encodage la requête est effectuée non ?

  7. #7
    Membre habitué Avatar de tsunamichups
    Inscrit en
    Octobre 2009
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 161
    Points : 178
    Points
    178
    Par défaut
    Au risque de dire une bêtise, vu que tu récupérer tes info par ton script asp, est ce que en modifiant la valeur de ton CODEPAGE cela ne résoudrait pas ton soucis ?
    (Le code page de l'appli que reçois le code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par tsunamichups Voir le message
    Au risque de dire une bêtise, vu que tu récupérer tes info par ton script asp, est ce que en modifiant la valeur de ton CODEPAGE cela ne résoudrait pas ton soucis ?
    (Le code page de l'appli que reçois le code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    Oui, ça fonctionnerait, c'est en fait la solution permanente que je vais utiliser. Le problème c'est que "l'application qui reçois la requête" se trouve en fait sur une cinquantaine de serveurs différents répartis dans le monde. Il faudrait alors mettre à jour tous les serveurs en même temps et c'est très compliqué voir impossible.

    C'est pour ça que je cherche solution temporaire qui va permette de mettre le site web à jour, et par la suite mettre les serveurs distants à jour graduellement.

    Évidemment, j'accepte que les caractères non latin ne puissent pas être traités par les serveurs distants qui n'auront pas encore été mis à jour, mais je voudrais qu'ils puissent au moins continuer à traiter les caractères latins malgré le fait que le site web a changé d'encodage.

    La meilleure solution que j'ai trouvé jusqu'à maintenant est de convertir les string utf-8 du site web en ANSI avant d'envoyer au serveur distant qui n'est pas encore mis à jour. Toutefois je n'ai pas encore réussi à faire fonctionner correctement.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    Toute mes tentatives de ré-encoder la string en latin-1 avant d'envoyer à l'application distante n'ont pas fonctionné. J'ai néamoins trouvé la solution, il suffit que je change le code page avant d'url encoder les paramètres de la requête puis que je le remette à ce qu'il était après

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Session.CodePage = "1252"
    [Url encodage des paramètre de la requête]
    Session.CodePage = "65001"
     
    winhttpreq.send data
    Je trouve ça un peu bête de changer tout le code page de la session, mais c'est la seule chose qui fonctionne jusqu'ici, en espérant que ça ne me cause pas d'autres problèmes...

  10. #10
    Membre expérimenté
    Avatar de kaiser59
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 264
    Points : 1 350
    Points
    1 350
    Par défaut
    Citation Envoyé par kdmbella Voir le message
    cette méthode est trop fastidieuse cella revient a developper 3 fois le meme site si l'on veux 3 langue or chaque language propose des solutions comme stockée les données dasn plusieurs langues et garder le meme site et ainsi en fonction de la langue le site ira chercher l'information correspondante ou alors l'usage des fichiers ressources pour chaque langue (cas de asp.net)
    Le fait de changer l'encodage ne fait pas une traduction du site mais juste une retranscription ?? Je doute que les chinois comprenne le mot "voiture" retranscrit et non traduit ^^

Discussions similaires

  1. Conversion ISO-8859-1 vers UTF-8
    Par wd_newbie dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/03/2015, 12h45
  2. Conversion ISO-8859-1 vers UTF-8 dans Eclipse
    Par Jerhom dans le forum Eclipse
    Réponses: 2
    Dernier message: 03/06/2008, 17h35
  3. Migration ISO-8859-1 -> UTF-8
    Par HurtMarley dans le forum SQL
    Réponses: 7
    Dernier message: 02/11/2007, 09h09
  4. Réponses: 1
    Dernier message: 05/12/2006, 16h54
  5. conversion iso-8859-1 vers utf-8
    Par gorgonite dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/08/2006, 12h49

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