MySQL en UTF8 Problematiek

2 Dec 08 by Bouke

Altijd al een crime geweest, maar nooit last mee gehad; is het plaatsen van special characters in de MySQL database. Tot voorheen maakte we ons hier niet zo druk over, zolang het bij de output op een pagina er maar gewoon uit kwam. Gebruik je echter geen pagina maar een CSV bestand als output; dan wordt het lastiger.

MySQL slaat speciale tekens standaard op een andere manier op, voorbeelden hiervan zijn bijvoorbeeld: ® = ®   â�¢ = ·   ë = ë   ï = ï   â��= ’

Uiteraard begrijpt Excel niet dat ë een ë is. Daarom moeten er een paar handelingen gebeuren om er voor te zorgen dat de tekens op de originele manier in de database gestopt moeten worden.

  1. Zorg ervoor dat de database EN je tabel staan ingesteld op de UTF8_UNICODE_CI collocatie.
    dit kan je checken door in PHPMyAdmin de volgende query te doen:
    SHOW VARIABLES LIKE ‘character_set_database’
     
  2. Zet bij de standaard DBConnect functie in je PHP script de volgende regels extra:
    $db_charset = mysql_query( “SHOW VARIABLES LIKE ‘character_set_database’” );
    $charset_row = mysql_fetch_assoc( $db_charset );
    mysql_query( “SET NAMES ‘” . $charset_row['Value'] . “‘” );

    Dit script zorgt ervoor dat alles op dezelfde manier de database in wordt geschreven als hoe de collocatie ook echt staat.

That’s it. Er is nog een tweede manier, maar deze is een stuk minder mooi. Voor elke $_POST die de database in gaat er een utf8_decode($_POST['whatever']) voor te zetten. Let er dan wel op dat je deze ook weer encode als je dit op een web pagina wil laten zien.

Excel snapt het echter ook allemaal nog niet helemaal bij het dubbelklikken op een geexporteerde CSV dump. Dit is op te lossen door in plaats van het bestand standaard te openen, een nieuw bestand te maken en: data -> externe gegevens importeren -> gegevens importeren (zorg er dan voor dat de import op UTF8 – 65000 staat!)

Aangezien Excel altijd last heeft met enters en dergelijke, kan je in phpMyAdmin beter kiezen voor de export naar XML. Open dit in Excel; en alles staat meteen zoals het hoort!

Meer hierover kan je hier vinden.

IMPORTEREN VAN CSV bestanden: Als de speciale tekens er niet uit zien (niet goed werken) – Selecteer dan bij het importeren “Latin1″.

Tags: , ,

Leave a comment

Gers? Stuur 'm door!
E-mail vriend(in)
Bericht
Veiligheidscode