OVH Cloud OVH Cloud

Type de fichier

2 réponses
Avatar
Benoît
Bonjour,
Existe-il un moyen de récupérer le type d'encodage d'un fichier
htmll?
Ca renverrais unicode, unicode (utf-Cool, iso-8859-1...etc

j'ai essayer de voir iconv_get_encoding... sans succès.

Ensuite je voudrais, après avoir récupérer le type convertir le
fichier dans un format spécifique (unicode par exemple). Avec iconv(),
il devrais y avoir moyen non?

Merci pour vos infos

2 réponses

Avatar
Guillaume Bouchard
Benoît wrote:
Bonjour,


Bonjour.

Existe-il un moyen de récupérer le type d'encodage d'un fichier
htmll?


Directement, non malheureusement. Si cela était possible on ne
s'amuserait pas à le spécifier dans le fichier.

Maitenant il est plutôt facile de recuperer le contenu de la balise
meta. En esperant que celle-ci soit correctement renseignée.

<?php

$file = 'truc.html';
$file_contents = file_get_contents($contents);

preg_match('`<meta http-equiv="Content-Type"
value=".*?;charset=(.*?)">`',$file_contents,$match);
echo $match[1];

?>

C'est trés perfectible.

Ensuite je voudrais, après avoir récupérer le type convertir le
fichier dans un format spécifique (unicode par exemple).


Si je ne me trompe pas tu ne pourras jamais convertir un fichier en
unicode pour la simple et bonne raison que l'unicode n'existe pas en
tant que format. L'unicode c'est la norme qui indexe les caractères.
L'utf8 n'est qu'une implantation (partielle) de cette norme.


Avec iconv(),
il devrais y avoir moyen non?


utf8_encode() surement.

Merci pour vos infos


Sinon tu peut chercher comment font les navigateurs (avec plus ou moins
de succes) pour deviner l'encodage de certains pages. C'est trés
statistique et plutôt complexe à implanter et je pense que le jeu n'en
vaut pas la chandelle. Mais c'est à toi de voir.

--
Guillaume.

Avatar
Benoît
Merci bien pour ton aide.

Ta solution de récupérer l'info dans la balise <meta> est bien mais
le problème est qu'avec Internet Explorer, que j'enregistre le fichier
en unicode(c'est-à-dire UTF-16) ou bien ISO-8859-1, j'ai l'impression
qu'il est toujours reconnu en tant qu'ISO-8859-1...

Existe-il une fonction comme mb_detect_encoding qui fonctionne pour
UTF-16?

Merci