Bonjour à tous,
Je lutte depuis des heures pour résoudre un problème d'encodage de caractères. J'espère trouver ici un peu de réconfort...
Je dois transformer un très gros fichier ODS (Tableur LibreOffice) en une interface web + MySQL. Pour cela j'ai importé directement le tableau dans PHPMyAdmin (sans problème). Tous les champs sont des chaines de caractères.
Visuellement toutes les données s'affichent correctement dans une page UTF-8. Mais j'ai remarqué énormément de caractères spéciaux qui ne me semblent pas "conforme" car non capturés par une fonction preg_replace_callback()
Après un long moment, j'ai constaté que certains caractères n'étaient pas encodés de la même manière comme par exemple : "é"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 echo preg_replace_callback( '/([çñÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðòóôõöùúûüµýÿ])/u', function ($matches) { return '<span style="background-color:#ffff66;font-size:1.2em;border:1px solid black">'.$matches[0].'</span>'; }, $str );
1/ capturé par preg_replace_callback() : c3a9 en héxa
2/ non capturé par preg_replace_callback() : 65cc81 en héxa !
J'ai remarqué également qu'un copié/collé du caractère bizarre dans NotePad++, celui s'affiche : "e´"
Comment puis-je m'y prendre pour "purifier" chaque cellule du tableau (fichier ODS) avant de l'importer dans MySQL ?
sauf si la solution se trouve dans LibreOffice (mais pas trouvé).
Merci d'avance !
Partager