Problème d’accent suite passage à PHP5.6

En cours de toilettage de mon site FUNIX, j’ai supprimé la section réseau qui était vraiment très obsolète et je n’ai vraiment plus le temps de la mettre à jour et de la maintenir, elle est encore accessible néanmoins via la carte du site. J’ai toiletté également ma section UNIX qui elle est encore pleinement d’actualité, il faut dire que globalement l’administration d’un système a assez peu évolué en plusieurs décennies, on retrouve les mêmes commandes. C’est surtout la partie environnement graphique qui a le plus évolué.

J’ai souhaité rajouter le flux RSS de mon blog sur la page d’accueil. On trouve sur le net du code PHP à intégrer dans le code HTML de la page. Cela donne cela :

[pastacode lang= »php » manual= »%3C%3Fphp%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(!%40%24fluxrss%3Dsimplexml_load_file(‘http%3A%2F%2Folivier.hoarau.org%2F%3Ffeed%3Drss2’))%7B%20throw%20new%20Exception(‘Flux%20introuvable’)%3B%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(empty(%24fluxrss-%3Echannel-%3Etitle)%20%26%26%20empty(%24fluxrss-%3Echannel-%3Edescription)%20%26%26empty(%24fluxrss-%3Echannel-%3Eitem-%3Etitle))%20throw%20new%20Exception(‘Flux%20invalide’)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24i%3D0%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24nb_affichage%20%3D%204%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20foreach(%24fluxrss-%3Echannel-%3Eitem%20as%20%24item)%7B%0A%09%09%09echo%20’%3Ca%20href%3D%22′.(string)%24item-%3Elink.’%22%3E’.(string)%24item-%3Etitle.’%3C%2Fa%3E%3C%2Fbr%3E’.(string)%24item-%3Edescription.’%3C%2Fbr%3E%3Ci%3Epubli%C3%A9%20le’.(string)date(‘d%2Fm%2FY’%2Cstrtotime(%24item-%3EpubDate)).’%3C%2Fi%3E%3C%2Fbr%3E%3C%2Fbr%3E’%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(%2B%2B%24i%3E%3D%24nb_affichage)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%09%09%09%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch(Exception%20%24e)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20echo%20%24e-%3EgetMessage()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%3F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E » message= » » highlight= » » provider= »manual »/]

Or mon site FUNIX hébergé en mutualisé chez online.net tourne encore en PHP4 qui ne reconnait pas la commande simplexml_load_file. Heureusement, via la commande d’administration on peut le faire évoluer vers les versions 5.5, 5.6 et même 7. Pour éviter une marche trop haute, j’ai choisi de migrer vers la version 5.6 et là catastrophe, tous les accents étaient en vrac. Toutes les solutions trouvées sur internet pour forcer le jeu de caractères par défaut (charset) de UTF-8 vers celui utilisé par mes pages, à savoir le ISO-8859-1, n’ont pas fonctionné. J’étais donc quitte pour modifier une à une toutes mes pages !

Fort heureusement, et c’est bien un des gros atouts d’une système UNIX, il existe les scripts bash, il m’a fallu à peine quelques minutes pour régler le problème. Tout d’abord j’ai appliqué sur mes pages le script suivant qui permet de convertir les caractères du jeu de caractère ISO-8859-1 vers UTF-8 :

[pastacode lang= »markup » manual= »%23!%2Fbin%2Fbash%0Afind%20.%20-name%20%22*.php%22%20-o%20-name%20%22*.htm*%22%20-exec%20sh%20-c%20%22(%20%5C%0A%20%20%20iconv%20-f%20ISO_8859-1%20-t%20UTF-8%20%7B%7D%20-o%20%7B%7D.iconv%20%3B%20%5C%0A%20%20%20mv%20%7B%7D.iconv%20%7B%7D%20%3B%20%5C%0A)%22%20%5C%3B » message= » » highlight= » » provider= »manual »/]

Ensuite il a fallu modifier l’indication de charset dans les pages html et php avec le script suivant :

[pastacode lang= »markup » manual= »%23!%2Fbin%2Fbash%0Afor%20file%20in%20*.htm*%0Ado%0A%20%20echo%20%22Traitement%20de%20%24file%20…%22%0A%20%20sed%20-i%20-e%20%22s%2FISO-8859-1%2FUTF-8%2Fg%22%20%22%24file%22%0A%20%20sed%20-i%20-e%20%22s%2Fiso-8859-1%2FUTF-8%2Fg%22%20%22%24file%22%0Adone%0Afor%20file%20in%20*.php%0Ado%0A%20%20echo%20%22Traitement%20de%20%24file%20…%22%0A%20%20sed%20-i%20-e%20%22s%2FISO-8859-1%2FUTF-8%2Fg%22%20%22%24file%22%0A%20%20sed%20-i%20-e%20%22s%2FISO-8859-1%2FUTF-8%2Fg%22%20%22%24file%22%0Adone%0A » message= » » highlight= » » provider= »manual »/]

Et le tour est joué.

Laisser un commentaire