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

Web & réseau Delphi Discussion :

TIdHttpServer : envoyer de l'unicode


Sujet :

Web & réseau Delphi

  1. #1
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut TIdHttpServer : envoyer de l'unicode
    Bonjour,

    j'ai une petite application qui retourne dynamiquement une petite page html. Elle a été faite avec un TIdHTTPServer. Aujourd'hui on souhaiterai traduire la page notament en Chinois (mais pas que). Et là ça coince. Nous sommes en Delphi XE2.
    Donc si je code ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    aResponseInfo.CharSet := 'utf-8';
        aResponseInfo.ContentType := 'text/html';
     
        wDoc := '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'
              + '<html>'
              + '<HEAD><meta http-equiv="Content-Type" content="text/html; charset=utf8">'
              + '</head>'
              + '<body>'
              + '适用于电动车辆的高性能驱动电动机'
              + '</body>'
              + '</html>';
     
        AResponseInfo.ContentText := wDoc;
    *la chaine est en unicode dans mon source, pas en caractères html comme elle apparait ici.

    dans le navigateur on obtien des ?????

    si je code ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        aResponseInfo.CharSet := 'utf-8';
        aResponseInfo.ContentType := 'text/html';
     
        wDoc := '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'
              + '<html>'
              + '<HEAD><meta http-equiv="Content-Type" content="text/html; charset=utf8">'
              + '</head>'
              + '<body>'
              + UTF8Encode( '适用于电动车辆的高性能驱动电动机')
              + '</body>'
              + '</html>';
     
        AResponseInfo.ContentText := wDoc;
    Dans le navigateur on obtien la traduciton utf8

    Suite à des recherche sur internet, j'ai également essayé dans le OnConnect de mettre ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AContext.Connection.IOHandler.DefStringEncoding := TEncoding.Default;
    aucun effet

    Est-ce que quulqu'un qui s'y connait bien en encodage pourrait m'éclairer un petit peu ?

    Merci de votre attention.

    @++
    Dany

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    question bête, est-ce que ton navigateur peu afficher du chinois ?

    ensuite si tu compares ta page générée avec un site chinois quelles sont les différences ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    Bonjour,

    question pas bête du tout. Mais oui il peut le faire. Nous avons déjà des applications développées avec Intraweb dont les formulaires sont traduits en Chinois, et ça passe bien. Et oui j'ai comparé les sources html, l'entête est bien le même, seulement avec les formulaires générés par Intraweb je retrouve bien les caractères chinois dans le source de la page, alors que dans ceux générés par le TIdHttpServer, je retrouve les ?????, ce qui me fait penser que c'est plutôt que ça part mal encodé du serveur. Ce qui est étrange c'est que je suppose qu'Intraweb utilise le TIdHttpServer comme base pour son serveur intégré, et que donc il arrive bien à envoyer les chaines comme il faut.
    J'utiliserai bien intraweb pour cette application, mais je n'ai pas besoin de session, je trouve donc dommage de devoir en créer une pour rien, la solution du TIdHTTPServer me paraissait plus light, peut être trop malheureusement, mais je pense pas.

    Merci pour votre aide.

    @++
    Dany

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    de tête tu dois pouvoir utiliser un Stream pour envoyer ta réponse, et là tu peux mettre ce que tu veux dedans sans risque de conversion par la suite.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    Effectivement on peut aussi envoyer un Stream. Mais finalement ce ne sera pas la peine, j'ai finit par trouver : en fait mon code est bon, sauf qu'il semble que aResponseInfo.ContentType et aResponseInfo.Charset doivent être renseignés après aResponseInfo.ContentText, sinon ils ne sont pas pris en compte. Et à priori il faut qu'ils le soient dans cet ordre, bien que au vu de la source la property Charset n'ait pas de setter, hmm étrange... Mais bon, le résultat est là, c'est tout ce que je voulais.

    En tout cas merci de t'être penché sur mon problème.

    @++
    Dany

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/04/2008, 11h23
  2. [ASE 15] Envoyer le resultat d'une requète en unicode par mail
    Par antho57 dans le forum Adaptive Server Enterprise
    Réponses: 1
    Dernier message: 25/03/2008, 12h21
  3. [Encodage] Unicode dans un mail envoyé par servlet
    Par beber69 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 16/09/2005, 17h21
  4. [Kylix] quelqu'un pouvez m'envoyer Kylix 2
    Par tassous10 dans le forum EDI
    Réponses: 1
    Dernier message: 14/10/2002, 00h51
  5. Socket:Envoyer du texte d'un serveur vers tout les clients
    Par cedm78 dans le forum Web & réseau
    Réponses: 7
    Dernier message: 01/08/2002, 16h40

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