Encodage accents

Fermé
Noortch Messages postés 5 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 6 mars 2014 - 6 mars 2014 à 19:12
Noortch Messages postés 5 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 6 mars 2014 - 6 mars 2014 à 21:03
Bonjour,

Je suis en train d'écrire un programme qui prend un code source d'une page Web (amazon.fr) et qui le réécrit dans un fichier texte. Mon problème, c'est que certains caractères spéciaux sont bien encodés, mais d'autres non car le code source contient des 'é' ou 'à' sous cette forme là et non sous la forme 'é' ou 'à' et du coup, ceux là se transcrivent avec un point d'interrogation blanc sur fond noir (trop laid ^^)

Quelqu'un a une idée pour m'aider please?

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
6 mars 2014 à 20:05
Comment as-tu fait ton transfert ? Est-ce que tu es passé par des String ? Cela provoque une conversion des caractères qu'il faut bien gérer.

Sinon, plus simple, tu ne passes pas par des String, mais directement par les octets, le fichier écrit sera donc strictement identique à la page web.

public static void main(String[] args) throws IOException
{
    InputStream in = new URL("http://www.amazon.fr/").openStream();
    OutputStream out = new FileOutputStream("C:/amazon.html");
    
    byte[] buffer = new byte[1024];
    
    int n;
    while ((n=in.read(buffer))!=-1)
        out.write(buffer, 0, n);

    out.close();
    in.close();
}
0
Noortch Messages postés 5 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 6 mars 2014
6 mars 2014 à 20:26
private static String getSourceCode(String url) throws IOException {
URL productSite = new URL(url);
BufferedReader br = new BufferedReader(new InputStreamReader(
productSite.openStream()));

String inputLine;
String code = "";
while ((inputLine = br.readLine()) != null) {
code += "\n" + inputLine;
}
br.close();
return code;
}

Oui effectivement je suis passé par des strings ^^ Je vais tester comme tu dis!
0
Noortch Messages postés 5 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 6 mars 2014
6 mars 2014 à 20:38
<div class="reviewText">ca aspire m?me pas mal peu encombrant,léger la carcasse semble solide,on à l'impression de promener u

Regarde ce bout de texte qui est ecrit dans mon fichier... ya de tout comme encodage ^^ je comprend pas pourquoi.. ca a rien changé
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
6 mars 2014 à 20:41
Tu le lis avec quoi ton fichier une fois écrit ?
0
Noortch Messages postés 5 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 6 mars 2014
6 mars 2014 à 20:42
manuellement (texteditor). enfin la pour verifier en tout cas mais ca change rien, quand ca arrive dans la database, ca reste tel quel avec les trucs bizarres...
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
6 mars 2014 à 20:52
Tu n'as jamais parlé de base de données... elles aussi ont leur propre encodage, et là aussi il faut soit gérer ça correctement (compliqué), soit ne manipuler que des octets, avec des BLOB.
C'est d'autant plus pertinent que les données que tu vas manipuler sont assez grandes (plusieurs centaines de ko) donc les manipuler en tant que chaînes de caractères ce n'est pas terrible.
0