[RESOLU] Convertir Fichiers utf-8 en utf-16LE

Petit nouveau ! | 2 Messages

13 févr. 2017, 17:30

Bonjour A tous,

Actuellement, je crée des fichiers encodé en utf8 via PHP puis exécute un script PowerShell pour les convertir en UTF-16LE.
J'aimerais automatiser l'encodage via PHP.

Quel est le script pour encoder des lots de fichier de UTF-8 en UTF-16LE avec PHP ?

Je vous remercie
Cordialement

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

13 févr. 2017, 17:50

Bonjour,

Il n'existe pas de script tout fait mais tu peux le faire toi-même avec les fonctions :
- glob() pour lister tous les fichiers d'un répertoire : http://php.net/glob
- foreach() pour parcourir cette liste fichier par fichier : http://php.net/foreach
- file_get_contents() pour récupérer le contenu du fichier : http://php.net/file_get_contents
- file_put_contents() pour écrire le résultat converti dans un nouveau fichier (ou dans le même) : http://php.net/file_put_contents

Pour la conversion d'encodage, PHP dispose de 2 fonctions iconv() ou mb_convert_encoding() qui font à ma connaissance la même chose :
iconv("UTF-8", "UTF-16LE", $contenu);
// ou
mb_convert_encoding($contenu,'UTF-16LE','UTF-8');
Attention l'ordre des paramètres n'est pas le même.

http://php.net/iconv
http://php.net/mb_convert_encoding
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

13 févr. 2017, 18:10

je te remercie pour ta réponse. je viens de tester mais cela ne fonctionné pas car il me trouvé aucun encodage du fichier.

Mais en fouillant le net et ta fonction "mb_convert_encoding", j'ai testé ceci:
$contenu=chr(255).chr(254).mb_convert_encoding( $contenu, 'UTF-16LE', 'UTF-8');
source: http://ctd-web.fr/blog/2010/05/14/php-c ... -utf-16le/

Le fichier est bien encodé en UTF-16LE.

Je n'ai pas d'explication du pourquoi il faut rajouté 2 caractères.

Merci :P

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

14 févr. 2017, 10:26

Ces 2 caractères correspondent au BOM :
https://fr.wikipedia.org/wiki/Indicateu ... des_octets.

Sans le BOM ton fichier était aussi correctement encodé mais le logiciel que tu utilises pour vérifier l'encodage t'indiquait quelque chose de faux vu que le BOM est facultatif
Quand tout le reste a échoué, lisez le mode d'emploi...