Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2011, 14h49   #1
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 12
Points : 10
Points : 10
Par défaut Détecte l'encodage d'un fichier MacRoman

Bonjour,
Nouveau sur le forum, j'ai effectué une recherche mais sans succès, donc désolé si le topic existe déjà...

Voilà mon problème, j'ai développé une appli qui supporte l'import de fichiers CSV, mon problème vient des personnes qui génèrent un fichier CSV à partir de Office Mac 2008 (enregistrer un tableau Excel au format CSV via Excel)

Ce fichier est au format MacRoman et je voudrait pouvoir détecter ce format pour lui appliquer un traitement de faveur dont j'ai déjà le script (conversion MacRoman -> UTF-8)

Ma question est : "Comment détecter l'encodage de ce fichier : MacRoman ?"

Je sais détecter un encodage ISO, UTF-8 avec mb_detect_encoding() mais pour le format Mac je sèche....

Merci
okiseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 14h53   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par okiseb Voir le message
Bonjour,
Nouveau sur le forum, j'ai effectué une recherche mais sans succès, donc désolé si le topic existe déjà...

Voilà mon problème, j'ai développé une appli qui supporte l'import de fichiers CSV, mon problème vient des personnes qui génèrent un fichier CSV à partir de Office Mac 2008 (enregistrer un tableau Excel au format CSV via Excel)

Ce fichier est au format MacRoman et je voudrait pouvoir détecter ce format pour lui appliquer un traitement de faveur dont j'ai déjà le script (conversion MacRoman -> UTF-8)

Ma question est : "Comment détecter l'encodage de ce fichier : MacRoman ?"

Je sais détecter un encodage ISO, UTF-8 avec mb_detect_encoding() mais pour le format Mac je sèche....

Merci
normalement c'est pareil mb_detect_encoding te revoie quoi ?
le MacRoman c'est une variante de l'ISO-8859-1
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 15h01   #3
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 12
Points : 10
Points : 10
mb_detect_encoding($texte,"auto",true) me renvoi rien, il fonctionne avec un CSV en UTF-8 mais pas en MacRoman...
okiseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 15h06   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par okiseb Voir le message
mb_detect_encoding($texte,"auto",true) me renvoi rien, il fonctionne avec un CSV en UTF-8 mais pas en MacRoman...
rajoute le MacRoman dans la liste
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 15h42   #5
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 12
Points : 10
Points : 10
ca n'affiche toujours rien, mais ca marche pour l'UTF-8...
J'ai essayé avec "macintosh" mais rien de mieux...
okiseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 15h50   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par okiseb Voir le message
ca n'affiche toujours rien, mais ca marche pour l'UTF-8...
J'ai essayé avec "macintosh" mais rien de mieux...
fais l'inverse si c'est pas de l'utf-8 fait un utf8_encode


EDIT : visiblement le MacRoman n'est pas pris en charge : http://www.php.net/manual/fr/mbstrin...-encodings.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 19h59   #7
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 12
Points : 10
Points : 10
donc mb_detect_encoding() n'est pas adapté à mon besoin... arf
Détecter si c'est de l'UTF-8...
Mouais sauf que j'ai 3 types de formats possibles :
UTF-8 : RAS
ISO-8859-1 : utf8_encode()
MacRoman : encodage en UTF-8 via une fonction spéciale

Le problème est que je ne parviens pas non plus à distinguer un fichier Excel CSV en ISO-8859-1 avec mb_detect_encoding()

Je vais oublier le MacRoman et essayer de détecter le reste et appliquer ma fonction MacRoman->UTF8 en dernier lieu

Je reviens dès que j'ai pu avancer !
okiseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 21h23   #8
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 12
Points : 10
Points : 10
C'est bon, j'ai une bidouille qui fonctionne pour détecter si un fichier est UTF-8, ISO-8859-1 ou MacRoman :

<?php
//Je détecte l'encodage de base
$encodage =mb_detect_encoding($buffer,'auto',true);
//Si ce n'est pas de l'UTF-8 je tente une conversion des caractères spéciaux en html
if($encodage!="UTF-8"){$buffer2=htmlentities($buffer);}
//Via une fonction je regarde si le résultat est conforme UTF-8
if(is_utf8($buffer2)==0){
//Non UTF-8 (le resultat affiche des "?" a la place des caractères spéciaux)
$buffer=MacRoman_to_utf8($buffer);
}else{
//Conforme UTF-8 j'applique la transformation classique
$buffer=utf8_encode($buffer);
}
?>

Merci pour l'aide le topic est résolu
okiseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 09h57   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
utilise iconv qui lui gère le MacRoman (a voir pour la gclib)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h58.


 
 
 
 
Partenaires

Hébergement Web