[RESOLU] Reparer encodage (héhé)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Reparer encodage (héhé)

Re: [RESOLU] Reparer encodage (héhé)

par @rthur » 06 avr. 2014, 15:29

Merci jean-monique pour ce partage, effectivement ça semble une très bonne trouvaille.
Je mets le lien direct vers la librairie sur github : https://github.com/neitanod/forceutf8

Re: [RESOLU] Reparer encodage (héhé)

par jean-monique » 29 mars 2014, 21:34

http://stackoverflow.com/questions/9107 ... hing-utf-8
=> y'a une bibliotèque qui peut changer la vie des gens qui font du scrapping en bourrins \o/ yeah

Re: Reparer encodage (héhé)

par jean-monique » 24 mars 2014, 01:03

Ben à coup de strpos ou d'expression régulière, dès qu'on trouve un des double char caracteristique, on double décode.
à la réflexion c'est pas si sale.

Ben classer les sources c'est relou, vu que (y'a pas que du propre partout) elles sont parfois héterogènes (oui, "arrrg" est le tèrme technique ici de circonstance), et surtout, je voudrais ajouter des sources à la volé sans me poser de questions.

Ma solution fonctionne, je suis juste integriste du propre, ça me chiffonne un peu... j'en resterai là :p

Re: Reparer encodage (héhé)

par xTG » 22 mars 2014, 19:39

les 5% restant j'ai des aberrations: des chaînes dont l'encodage est UTF-8, mais qui en vérité sont double-encodées => héhé .

Je fais du scrapping, je n'ai donc pas de contrôle sur les données sources. J'ai juste à un moment des é dans une chaine dont l'encodage est UTF-8.
Tu ne peux pas y faire grand chose...
Tenter d'exploiter un plat de spaghettis...
Je ne vois que gérer des règles en fonction des sources si ces dernières renvoient toujours des chaînes mal encodées.
Pour celle qui encode double => décodage double, ect

Et si tu ne peux pas classer tes sources ainsi...
Tu crois toujours au père-noël ? :roll:

Re: Reparer encodage (héhé)

par jean-monique » 22 mars 2014, 17:01

Je vais reformuler mon problème.

Je traite des données d'un grand nombre de sources.
95% du temps, avec de l'entête, des données meta, je retombe sur les pâtes
les 5% restant j'ai des aberrations: des chaînes dont l'encodage est UTF-8, mais qui en vérité sont double-encodées => héhé .

Je fais du scrapping, je n'ai donc pas de contrôle sur les données sources. J'ai juste à un moment des é dans une chaine dont l'encodage est UTF-8.

Re: Reparer encodage (héhé)

par sirakawa » 22 mars 2014, 13:47

Exemple développé:
<?PHP
mb_internal_encoding("UTF-8");
error_reporting(E_ALL);
$i = "chaîne";
$z =mb_detect_encoding("$i", "UTF-8, ISO-8859-1, " ,TRUE);

print "$z $i";
mb_internal_encoding("UTF-8");
$converti = mb_convert_encoding($i, "UTF-8", $z);
print "$converti";
?>
évidemment s'il y a beaucoup de chaines...

Re: Reparer encodage (héhé)

par xTG » 22 mars 2014, 13:05

As-tu essayé avec le donnée originale plutôt qu'un copier/coller ?
En effet ce que tu postes ici ce sont deux chaînes dans le même encodage. ;)
A savoir celui du forum.
Si je les prends et que je les enregistre dans un fichier j'aurai alors un nouvel encodage (et ce pour les deux chaînes), à savoir celui du fichier.

Bref le mb_detect_encoding est la bonne méthode mais il faut l'utiliser sur l'originale.

Re: Reparer encodage (héhé)

par jean-monique » 22 mars 2014, 12:13

Oui... sauf que mon soucis c'est que l'encodage interne de ma string est pas le bon :/
essaye donc
            var_dump(mb_detect_encoding('Comprimés'));
            var_dump(mb_detect_encoding('Comprimés'));
La solution est forcément de plus haut niveau, de l'ordre de la rustine... ou alors ?
Je ne vois pas... si tu as un snippet de code qui fait proprement ce que je veux, je suis preneur.

Re: Reparer encodage (héhé)

par xTG » 22 mars 2014, 10:30

La bibliothèque mb est tout à fait pour ce genre de problème :
- détection d'encodage
- conversion d'un encodage à un autre

http://fr2.php.net/manual/en/ref.mbstring.php

Reparer encodage (héhé)

par jean-monique » 22 mars 2014, 02:11

Bonjour,

Je suis sur un projet qui crawl des pages de divers (beaucoup) de sources, et je me rends compte que, même en prenant les entêtes et les balises meta en considérations, je me retrouve toujours avec des caractéres forts disgracieux :).

La solution pour laquelle j'ai opté: une bonne belle expression régulière bien moche ! (pléonasme ?)

Comment remédieriez vous à ce problème (je cherche la manière la plus propre possible)?

pour info php5.5, symfony 2 doctrine 2 (j'ai cherché s'il existait des helpers pour ça, manifestement pas

merci !