Bonjour !
Je ne sais pas si quelqu'un pourrait m'aider ; j'ai un problème qui me bloque depuis une semaine et je ne sais pas m'en sortir !
Bref, avec un script PHP5 j'importe le contenu d'un fichier XML en ISO 8859-1 dans une base de données MySQL - UTF8. À l'évidence il faut convertir de l'un à l'autre, et jusque-là j'ai trouvé deux possibilités :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $data[] = utf8_encode((string)$child);
... ou bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $data[] = convertToUtf8((string)$child); function convertToUtf8($text) { // cURL('http://'.$url); preg_match('/<meta.*?charset=(|\")(.*?)("|\")/i', $html, $matches); $charset = $matches[2]; if($charset) return mb_convert_encoding($text, 'UTF-8', $charset); else return $text; }
En exécutant le script en l'appelant depuis Firefox, tout va bien : ou l'un ou l'autre convertit correctement les chaînes et quand je fais la recherche sur ma page web je vois bien les « é » (parmi d'autres).
OR... si j'essaie d'appeler le même script depuis le terminal Unix terminal SSH (cron job OU ligne de commande), au lieu d'« é » je vois « é ».
Avez-vous des idées ?? J'ai déjà essayé de mettre tous les mises en forme du serveur (LC_ALL, LANG, LANGUAGE, etc. en fr_FR.utf8) et ça ne marche pas.
Le pire, c'est que je vois les « é » correctement dans la console. Je ne sais pas s'il essaye de les garder en ASCII/ANSI ou quoi...
Votre aide serait bien appréciée ! Je commence à me douter de ce que je fais !
Partager