Détecter un champ en UTF-8 [Perl] - Perl - Programmation
Marsh Posté le 17-04-2018 à 00:03:24
Toute tes chaînes sont en utf8. Il est donc logique que utf8::valid renvoie 1 dans tous les cas.
Ce que tu veux tester, si j'ai bien compris, c'est si ces chaînes sont représentables dans l'encoding de la console de ta machine.
Code :
|
Ça donne en sortie:
TST0015108239|A Certain Point Of View Teaser 1 |
decode("utf8", $_) va mettre tes données dans la représentation interne de Perl (normalement en utf8 aussi, vu le use utf8, mais ça marchait pas directement, même en forçant la lecture du fichier en utf8, je ne sais pas trop pourquoi, donc je force le décodage après une lecture en mode caractère), et utf8::downgrade($_, 1) va rendre faux si la dégradation en donnée dans l'encoding de la machine (cp850 sur ma machine) est avec pertes, donc si la chaîne initiale n'est pas directement utilisable.
A+,
Marsh Posté le 16-04-2018 à 19:02:37
Bonjour,
C'est encore moi
Alors voilà, j'ai un fichier à parser avec des titres, certains malheureusement sont illisibles car en utf-8
Mon but est simplement de pourvoir les identifier et de ne pas les prendre en compte
Voici le code:
Le fichier source:
Je pensai qu'en utilisant utf8::valid($string) il allait me dire avec booléen si oui ou non le champ était en UTF-8
Mais il me répond 1 à chaque fois
Je m'attendais à pouvoir identifier la ligne 10 et 14 mais là en fait non.
Merci d'avance pour votre aide future