ecodage numériques des caracteres (é) verss UTF-8

Eléphant du PHP | 70 Messages

31 janv. 2015, 02:29

Bonjour

Je sèche sur un truc bête. Je dois récupérer en PHP des données issues de fichiers xls et ods (openoffice calc et excel)
J'ai trouvé la bibliothèque qui fait ca cependant, les data de feuilles excel lorsque les lettres portent des accents, me sont retournées sous la forme

Code : Tout sélectionner

& # x E 9 ;
(sans les Je cherche à récupérer un é tout simple (pas de

Code : Tout sélectionner

é
!), mon programme n'ayant pas la vocation d'afficher la lettre mais de la stocker et travailler de l'information, j'ai besoin de la récupérer en é encodé en UTF-8 par exemple

J'ai déjà fait pas mal de tests avec des utf-8 decode, encode, et autre fonctions d'encodage mais je n'arrive pas à trouver comment faire (en gros, si on affiche ca dans un vavigateur, il me faut un "é" et pas d'entité html)

Merci pour votre aide,

Mammouth du PHP | 688 Messages

31 janv. 2015, 03:13

sur http://www.table-ascii.com/ on trouve que E9 correspond à é
reste plus qu'à rechercher les & # x E 9 ; et à remplacer selon la table de correspondance.

Eléphant du PHP | 170 Messages

31 janv. 2015, 09:15

Bonjour,

html_entity_decode() ?

Eléphant du PHP | 70 Messages

31 janv. 2015, 12:16

Bonjour,

html_entity_decode() ?
Non j 'ai essayé aussi
Modifié en dernier par Sebastien le 31 janv. 2015, 12:56, modifié 1 fois.

Eléphant du PHP | 70 Messages

31 janv. 2015, 12:17

sur http://www.table-ascii.com/ on trouve que E9 correspond à é
reste plus qu'à rechercher les & # x E 9 ; et à remplacer selon la table de correspondance.

C est justement ce que je veux éviter car de peur de ne pas tout prendre en compte

Eléphant du PHP | 170 Messages

31 janv. 2015, 12:48

Non j 'ai essayé aissi
moi aussi j'ai essayé :
<?php
echo html_entity_decode('c&#xE9;l&#xE8;bre');
?>
... et dans le code source j'ai bien "célèbre" (avec les lettres "é" et "è")

Eléphant du PHP | 70 Messages

31 janv. 2015, 12:54

is fat avant de poster ici mon message car moi j'ai ceci

Code : Tout sélectionner

S & # x E 9 ; bastien
sans les espace évidemment

Eléphant du PHP | 70 Messages

31 janv. 2015, 12:56

eu j'ai posté un peu vite. Car en fait par rapport à toi, c'est lnversdse que je veux. J'ai un code numerique avec #qqch et je veux un caractere
Non j 'ai essayé aissi
moi aussi j'ai essayé :
<?php
echo html_entity_decode('c&#xE9;l&#xE8;bre');
?>
... et dans le code source j'ai bien "célèbre" (avec les lettres "é" et "è")
is fat avant de poster ici mon message car moi j'ai ceci

Code : Tout sélectionner

S & # x E 9 ; bastien

Eléphant du PHP | 170 Messages

31 janv. 2015, 12:59

is fat avant de poster ici mon message car moi j'ai ceci
Je ne comprends pas.
En vrai français, ça donne quoi ?

Eléphant du PHP | 70 Messages

31 janv. 2015, 13:08

bon je crois qu'un autre probleme intervien. Quand il me renvoie ca dans une page HTML ca marche mais des que de j'integre dans du XML avec ca ne marche plus. et il faut que ma donnée parte dans un fichier XML

Code : Tout sélectionner

$evt["nom_publicateur"] = $objPHPExcel->getActiveSheet()->getCell('D6')->getValue();
cette cellule contient Sébastien


dans mon XML j'ai

Code : Tout sélectionner

<?xml version="1.0"?> <evenement><version_norme>1.0</version_norme><nom_publicateur>S&#xE9;bastien LHUILLIER</nom_publicateur>

Eléphant du PHP | 70 Messages

31 janv. 2015, 13:20

voici le fichier script. C'est dans l'index, mais j'ai fourni les autres biliotheque utilisées pour pouvoir lancer els tests : http://dl.free.fr/uOBBCS2tr

Eléphant du PHP | 70 Messages

31 janv. 2015, 14:05

bon, pour ceux que ca intéresse, j'ai compris (mais pas testé tout entièrement mais ça a l'air bon) comment ca marche. Voila ce que je fait une fois la cellule du fichier excel lue (j'ai fait une ptite fonction car plus facile à corriger partout si y'a un bug ultérieur)

Code : Tout sélectionner

function decodeXLS2UTF8($x) { return utf8_encode(mb_convert_encoding($x, 'ISO-8859-15', 'UTF-8')); }
1. J'extrais la cellule (ailleurs) et je passe cette valeur en paramètre de cette fonction
2. J'encode en UTF-8 la données qui, avec OpenOffice, a l'air d’être en ISO-8859-15 (si votre fichiers excel est issu d'excel, peut être faut il mettre CP-1252 au lieu de ISO-8859-15) dans ce code je pense, encodage propre de microsoft, j'ai pas office j'ai pas pu essayer)
3. Je réencode le tout en utf-8 afin de réutiliser cette chaine dans la "sphère" web où l'utf-8 est la dominante.

J'en profite pour lancer un ti appel :
S'i l'en d'entre vous à excel sur sa machine (moi j'ai OO avec lequel j'enregistre en excel) et qu'il peut me transmettre un fichier excel avec une donnée accentuée dans la cellule D6 ou G7 (pour coller avec mon programme PHP), je suis preneur....

Merci grandement à vous tous