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

C# Discussion :

Problème de caractères spéciaux lors de la lecture d'une page HTML


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut Problème de caractères spéciaux lors de la lecture d'une page HTML
    Salut à tous,

    J'ai une application qui récupère les données d'une page HTML selon la demande de l'utilisateur mais j'ai un aussi au niveau de l'encodage des caractères. Les pages qui peuvent être récupérés sont toutes sur le même site mais le contenu peut être différent.

    Hors, ce contenu peut parfois ne pas avoir accepté les caractères spéciaux et m'affichant à la place leur code du style "&#XXX;". J'ai donc essayé différents Encoding pour le StreamReader mais rien n'y fait. Voici le bout de code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Proxy = WebRequest.GetSystemWebProxy();
    request.Proxy.Credentials = new NetworkCredential("UserName", "XXXXX");
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
     
    StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("ISO-8859-15"));
    content = Functions.sr.ReadToEnd();
     
    sr.Close();
    response.Close();
    Une idée d'où peut venir le problème?

  2. #2
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour.

    As-tu pensé à vérifier la valeur de HttpWebResponse.ContentType ? Celui-ci devrait spécifier l'encodage utilisé. Note qu'il dépend sans doute des encodages acceptés spécifiés dans la requête que tu as envoyée. Enfin il est toujours utile d'avoir Fiddler installé sur la machine pour vérifier les messages envoyés et les réponses reçues (libre, open source, simple à utiliser pour un usage basique : la requête en haut, la réponse en bas).

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    J'avais bien vérifié le content-type qui est toujours "text/html", et l'encodage de la page est spécifié sur "ISO-8859-1". Ce que je ne comprends pas, c'est que certaines pages ne rencontrent aucuns problèmes alors que d'autres ne me retournent pas les caractères spéciaux dans le bon format, les 2 cas sont pourtant sur le même site et le même type d'url (seulement une variable change).

  4. #4
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    ContentType est uniquement "text/html" sans précision d'encodage ? Dans ce cas quelles sont les valeurs de ContentEncoding et CharacterSet ? Et as-tu vérifié avec Fiddler si c'était bien la valeur retournée par le site et non une valeur présumée par VS ?

    Car quand tu parles de l'encodage "ISO-8859-1" de la "page", j'imagine que c'est un document html et que tu te réfères à la balise meta correspondante et non à la valeur spécifiée par l'en-tête http ?

    Enfin je t'invite à vérifier que toutes ces valeurs sont identiques dans les deux cas.

    PS : Si tu peux nous donner l'url (ou plutôt les url puisqu'il y a deux cas), n'hésite pas. Je présume que non vu que tu fournis des identifiants mais au cas où...

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    Le char-set n'est pas précisé dans le ContentType. Par contre il est bien présent dans CharacterSet en tant que "ISO-8859-1" et le ContentEnding n'est pas attribué. J'ai vérifié avec Fiddler et l'entête n'affiche effectivement pas le char-set, il est cependant présent dans les balises meta du site.

    Voici 2 pages pour exemples (la 2e est sujette aux problèmes de caractères):
    - 1ère page
    - 2e page

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    J'ai testé pas mal d'encodages différents, de passer par d'autres méthodes mais rien à faire, certaines pages contiennent tout de même ces caractères de type "&#XXX;". Je ne sais plus quoi faire honnêtement, j'ai essayé de trouver la différence entre les 2 pages ci-dessus mais je ne vois que des similitudes (normal venant du même site) ... ça commence à devenir louche.

    Le header de la page (toujours pareil):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/;q=0.8
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
    J'ai d'ailleurs remarqué que les pages ayant ce problèmes contiennent pourtant des caractères spéciaux seulement dans les balises HTML, le problème ne semble se présenter que sur le contenu de la page, c'est-à-dire le texte entre balises HTML. Une idée?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/06/2009, 11h56
  2. Lecture d'une page html
    Par Chipsssit dans le forum Langage
    Réponses: 2
    Dernier message: 05/03/2009, 19h21
  3. Problème pour ouvrir des fichiers .exe et .jar via une page html
    Par coyaote dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/02/2007, 12h28
  4. [SOAP] problème de caractères spéciaux
    Par ep31 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 02/12/2005, 17h43
  5. [SQL Server] problème de caractères spéciaux
    Par mbibim63 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 02/06/2005, 18h38

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