2011-07-26 5 views
0

J'ai essayé de faire: file_put_contents ($ file_name, utf8_encode ($ data)); Mais quand je vérifie l'encodage du fichier à partir du shell avec la commande linux: « fichier nom_fichier » je reçois: « file_name: texte ASCII »Comment convertir une chaîne ASCII encodée en UTF8 en php?

Est-ce que cela signifie que le utf8_encoding n'a pas travaillé? Si oui, quelle est la bonne façon de convertir ASCII en UTF8

Répondre

1

Si votre chaîne ne contient pas de caractères non-ASCII, alors vous ne verrez probablement pas de différences, puisque UTF-8 est rétrocompatible avec ASCII. Essayez d'écrire, par exemple, le texte "1000 さ く ら" et voyez ce qu'il se passe.

+0

+1, cela aussi. Les caractères ASCII seulement en UTF-8 sont détectés en ASCII par l'outil 'file'. –

+0

ma chaîne contient des caractères japonais –

1

Veuillez noter que utf8_encode convertit uniquement une chaîne codée en ISO-8859-1 en UTF-8. Un nom plus approprié serait "iso88591_to_utf8". Si votre texte n'est pas codé en ISO-8859-1, vous n'avez pas besoin de cette fonction. Si votre texte est déjà en UTF-8, vous n'avez pas besoin de cette fonction. En fait, l'application de cette fonction à du texte non encodé dans ISO-8859-1 risque fort de dégrader ce texte.

Si vous avez besoin de convertir du texte d'un encodage à un autre, , regardez plutôt iconv().

Voir http://php.net/manual/en/function.utf8-encode.php

1

ASCII est un sous-ensemble de l'UTF-8, donc si un document est ASCII, il est déjà UTF-8

Trouvé à: Convert ASCII TO UTF-8 Encoding

+0

ma chaîne contient des caractères japonais –

+0

Utilisez iconv alors. Il y a un exemple. – akond

0

Essayez ceci:

$data = mb_convert_encoding($data, 'UTF-8', 'ASCII'); 
file_put_contents ($file_name, $data); 

ou l'utiliser pour modifier le fichier encodage:

$fd = fopen($file, 'r'); 
stream_filter_append($fd, 'convert.iconv.UTF-8/ASCII'); 
stream_copy_to_stream($fd, fopen($output, 'w')); 

Référence: How to write file in UTF-8 format?

Questions connexes