2010-10-19 17 views
0

J'utilise libcurl pour obtenir des pages HTML.Décodage HTML en C/C++

J'ai quelques problèmes avec les caractères hébreux.

par exemple ceci: סלקום obtient du charabia.

Comment obtenir des caractères hébreux et non du charabia?

Ai-je besoin d'un décodeur HTML?

Est-ce que libcurl supporte une telle opération?

Est-ce que libiconv supporte une telle opération?

J'apprécie toute aide.

Merci

+0

Quel système utilisez-vous pour dire cela? Avez-vous un support pour les caractères hébreux? –

Répondre

1

Edit: Ok, donc ce que vous voyez est UTF-8 données décodées comme Windows 1252 (donc les références de caractères numériques étaient un hareng rouge). Voici une démonstration en Python:

>>> u = ''.join(map(unichr, [1505, 1500, 1511, 1493, 1501])) 
>>> s = u.encode('utf-8') 
>>> print s.decode('cp1255', 'replace') 
׳¡׳�׳§׳•׳� 

La solution à ce problème dépend de l'environnement dans lequel la sortie est affichée. Le simple fait de sortir les octets reçus et d'attendre qu'ils soient interprétés comme des caractères conduit à des problèmes comme celui-ci.

Un document HTML contient généralement une balise d'en-tête telle que <meta charset=utf-8> pour indiquer au navigateur quel devrait être son codage. Un document servi par un serveur Web contient un en-tête HTTP tel que Content-Type: text/html; charset=utf-8.

Vous devez demander à libcurl l'en-tête HTTP Content-Type pour connaître l'encodage du document, puis le convertir en codage système à l'aide de iconv. Bien que dans votre cas ce soit la page de code 1255, cela dépend du système de l'utilisateur et vous devriez donc rechercher les fonctions appropriées pour le détecter.

(Lire Unicode and Character Sets et l'étiquette character-encoding sur ce site pour une foule d'informations supplémentaires.)

+0

Je reçois des caractères comme: '¡'?'§' • '? Je dois travailler sur ces personnages. – embedded

+0

Et des personnages comme: '₪''''''¨ – embedded

+0

@embedded Aha! C'est exactement ce dont j'avais besoin. –