Skip to content

Aurélien STRIDE

  • Projets personnels
    • Projets Web personnels
    • Language-of.love
    • Squary Movey / Taiketsu-Doku
    • Sudokube / Wordokube / Linkube
    • Recyclage Augmenté
    • Réflexions en 3D
    • Fièvre de cheval du samedi soir
    • Concours divers
  • Dessins
    • 1998 – Arts Appliqués
    • Actualités
    • Compteurs d’eau
    • Divorce
    • Enquêtes
    • GPS
    • Immobilier
    • Informatique
    • Psycho
    • SNCF
    • Vie de couple
    • Dessins divers
  • Musiques
    • 2016 – Oxydoréduction
    • 2012-Maint. – Mashups
    • 2008-2016 – Indaba Remixes
    • 2013 – Live @ Mistral Palace
    • 2012 – Symphonie Electronique
    • 2010 – Metric : Fantasies
    • 2008 – Marcy Playground : Leaving Wonderland
    • 2008-2010 – Ganadji-Nesis
    • 2008-2009 – Mandalas
    • 2007-2009 – Electrons Libres
    • 2006-2007 – Manifest for a generation
    • 2003 – De Inferni Profundis
    • 1997 – MODified
    • Par genre
      • Ambient
      • Jazz
      • Hip-Hop
      • Nightclub
    • Morceaux non classés
    • Vidéos musicales
    • Playlist Soirée Château de Fitou
  • Travaux graphiques
    • Affiches / Flyers
    • Cartes de visite
    • Jaquettes CD-DVD
    • Logos & Bannières
    • Photomontages
    • Sketchups
    • Weavesilk
  • Tutoriels
    • Les outils du dépanneur informatique
    • Liste de mes programmes favoris
    • L’installation idéale d’un OS
    • Installer un serveur web sous Unix
  • Liens favoris
  • Road Trip

Aurélien STRIDE

Life & Works

Corriger des caractères UTF-8 forcés

22 octobre 2019 by webmaster

Certaines migrations de bases de données ne se passent pas bien, notamment à cause de l’encodage, et on se retrouve avec les caractères UTF-8 encodés sur 2 caractères directement en base : é en tant que caractère Ã et caractère ©, etc.

Voici un code que j’ai développé, avec l’aide de la classe phpQuery et de la fonction url_get_contents, qui est un appel cURL centralisé :

<!--?php
// Récupération de ce tableau depuis son URL
// (le code est externalisé de la fonction afin de ne l'appeler qu'une seule fois)
$utf8 = url_get_contents('http://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=char&view=3');
// trim pour ne garder que le code dans la balise body
$utf8 = substr($utf8, strpos($utf8, '));
$utf8 = substr($utf8, 0, strpos($utf8, ') + 7);
$docUtf8 = phpQuery::newDocument($utf8);

// fonction qui va balayer le tableau pour le remplacement
function replaceUTF8($string) {
    global $docUtf8;

    foreach ($docUtf8['td.utf8'] as $cell):
        if (trim(pq($cell)->text()) && trim(pq($cell)->prev()->text())):
            $string = str_replace(trim(pq($cell)->text()), trim(pq($cell)->prev()->text()), $string);
        endif;
    endforeach;

    return $string;
}
?>

Et le code pour TOUT repasser…

<?php
//Tables
$resultT = mysql_query("SHOW TABLES");
while ($rowT = mysql_fetch_array($resultT)):
    $table = $rowT[0];

    echo "<h2>$table</h2>";

    $id_field = AdminGetPrimaryCol($table);

    //Colonnes
    $tCols = array();
    $resultC = mysql_query("SHOW FULL COLUMNS FROM " . $table);
    while ($rowC = mysql_fetch_array($resultC)):
        if ($rowC[0] != $id_field)
            $tCols[] = $rowC[0];
    endwhile;

    //Update
    $result = mysql_query("SELECT * FROM $table");
    while ($row = mysql_fetch_array($result)):
        foreach ($tCols as $colonne):
            $q = "UPDATE $table "
                    . "SET $colonne='" . mysql_real_escape_string(replaceUTF8($row[$colonne])) . "' "
                    . "WHERE $id_field=" . $row[$id_field];

            echo "$q<br/>";
            
            mysql_query($q);
        endforeach;
    endwhile;

endwhile;
?>

Post navigation

Previous Post:

Installer Windows 10 via l’ISO

Next Post:

Annuaire des membres

[Mashup] Canned Heat meets Mar-Keys - Let's work last night
[Remix] Skype Ringtone
  • Blog
  • Dessins
    • 1998 - Arts Appliqués
    • Actualités
    • Compteurs d'eau
    • Dessins divers
    • Divorce
    • Enquêtes
    • GPS
    • Immobilier
    • Informatique
    • Psycho
    • SNCF
    • Vie de couple
  • Ecrits
    • Chanson : Albinoni mélancolique
    • Chanson : Igor le fantôme
    • Chanson : J'ai besoin de vacances...
    • Chanson : Leave me alone
    • Livre : Discours pour la Présidence
    • Livre : L'affaire des brosses à dents
    • Livre : Le lycanthrope contemporain
    • Livre : Mon perfectionnisme
    • Livre : My Ultimate Fonts Collection
    • Poème : Amour
    • Poème : Au revoir
    • Poème : Dévouement
    • Poème : Everlasting
    • Poème : Infidèle
    • Poème : La route est longue
    • Poème : Messages
    • Poème : Ô Nuit
    • Poème : Regard
    • Poème : Romance
    • Poème : Sadness
    • Poème : Un inadapté
    • Poème : Vouloir mourir
    • Poème : Voyage Initiatique
  • Emploi
    • 1999 - Menuisier chez Manpower
  • Liens favoris
  • Musiques
    • 1997 - MODified
    • 2003 - De Inferni Profundis
    • 2006-2007 - Manifest for a generation
    • 2007-2009 - Electrons Libres
    • 2008 - Marcy Playground : Leaving Wonderland
    • 2008-2009 - Mandalas
    • 2008-2010 - Ganadji-Nesis
    • 2008-2016 - Indaba Remixes
    • 2010 - Metric : Fantasies
    • 2011-2013 - Liaisons Covalentes
    • 2012 - Symphonie Electronique
    • 2012-2023 - Mashups
    • 2013-2015 - Lives @ Mistral Palace
    • 2016 - Music Maker Jam (Android)
    • 2016 - Oxydoréduction
    • Morceaux non classés
    • Par genre
      • Ambient
      • Disco
      • Hip-Hop
      • Jazz
      • Nightclub
      • Playlist Soirée Château de Fitou
    • Vidéos musicales
  • Projets personnels
    • Concours divers
    • Fièvre de cheval du samedi soir
    • Language-of.love
    • Projets Web personnels
    • Recyclage Augmenté
    • Réflexions en 3D
    • Squary Movey / Taiketsu-Doku
    • Sudokube / Wordokube / Linkube
  • Qui suis-je ?
  • Travaux graphiques
    • Affiches / Flyers
    • Cartes de visite
    • Jaquettes CD-DVD
    • Logos & Bannières
    • Photomontages
    • Sketchups
    • Weavesilk
  • Tutoriels
    • Installer un serveur web sous Unix
    • L'installation idéale d'un OS
    • Les outils du dépanneur informatique
    • Liste de mes programmes favoris
© 2025 Aurélien STRIDE - Powered by Minimalisticky