Excel, UTF-8 et le presse-papier
Un client de Progiweb (ma boîte) nous a confié l'import de son catalogue dans une base MySQL v4.
Là où c'est balaise, c'est que c'est un catalogue en anglais (jusque là tout va bien) et polonais !
D'où le format Unicode qu'on aime tous : UTF-8.
Dessous notre base MySQL se cache MyISAM avec des colonnes en "utf8_general_ci", et on tape dans tout ça avec PHP 5. Donc j'ai du faire un "mysql_request('SET NAMES \'utf8\'');" pour faire des "INSERT", mais sinon ça roule.
Ce client, comme beaucoup de client qui n'ont rien compris à l'informatique (j'ai pas dit que tous les clients n'y comprennent rien... relisez :) ), nous envoie son catalogue dans un fichier Excel.
Je me dis : "Pas de panique, Excel c'est un outil moderne et puissant puisque tout le monde l'utilise !".
... \_o<*pouic* \_o<*pouic* \_o<*pouic* \_o<*pouic*...
Je voulais donc exporter un fichier Excel contenant des caractères UTF8 au format text, type CSV, mais de préférence avec des '|' comme séparateurs puisque le texte peut contenir des virgules ou des point-virgules.
Je fais "Fichier > Enregistrer sous...". J'essaye au format CSV, au format texte séparé par des tabulations, tout ça. Et je n'obtiens que des caractères bizarres à la places des caractères polonais (comme le "L barré").
Après avoir lu des blogs et forums conseillant de faire du VBA parce qu'en natif tout ça machin ça marche pas, mon génie de boss (il adore que je l'appelle comme ça) m'a dit :
"Tu vas y arriver, essaye de copier/coller depuis Excel vers un outil simple type Textpad, dans un fichier texte au format déjà UTF-8 !".
Eh bien la solution c'était ça (il est trop fort mon boss !) :
- Ouvrir Notepad++ (oui, c'est libre et c'est mieux !).
- Indiquer que le fichier vide courant est au format UTF8;
- Enregistrer ce fichier.
- Ouvrir le fichier Excel, avec Excel.
- Tout sélectionner.
- Copier.
- Aller dans Notepad++.
- Coller.
A ce moment là, j'ai tout qu'est bon, à un détail près : le délimiteur de colonne est la tabulation, et je veux des '|'. Pas de soucis :
- Copier une tabulation dans le fichier.
- Aller dans Rechercher, remplacer.
- Coller la tabulation et demander son remplacement partout par '|'.
Ne pas oublier d'enregistrer ;)
Plus je lisais ce que les autres avaient traversé, moins j'y croyais... merci Olivier ! Et merci le presse-papier Windows qu'est pas si pourri que ça (... dur).