2010-09-11 23 views
1

J'ai certains fichiers sur mon ordinateur qui sont en UTF-16, bien que cela semble être à cause d'erreurs ou de corruption des fichiers plutôt que d'intention - ils sont censés être en anglais. J'ai téléchargé l'un d'entre eux (here). Si je laisse l'encodage dans Firefox (Viwe> Character Encoding) à UTF-8 alors je reçois des tonnes de charabia (voir screenshot). Si je change l'encodage en UTF-16 alors cela semble beaucoup mieux (voir screenshot2), bien qu'il y ait encore un tas de caractères CJK présents. Je voudrais passer en revue tous ces fichiers et les nettoyer, et probablement les enregistrer au format utf-8 (je vais insérer le contenu dans une table mysql qui utilise le classement utf8_general_ci). Est-ce que quelqu'un sait comment je peux le faire de manière automatisée avec PHP? Je voudrais me débarrasser de tous les caractères funky que le fichier affiche si vous essayez de le voir en UTF-8, et aussi de tous les caractères CJK de l'affichage si vous regardez en UTF-16.Nettoyage des caractères UTF-16/CJK en utilisant PHP?

Répondre

3

Cela devrait faire l'affaire:

$txt = file_get_contents('watches.txt'); 
$txt = mb_convert_encoding($txt, 'UTF-8'); 
/*Nice regexp to strip non asci and non-printable chars*/ 
$txt = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S','',$txt); 
$txt = preg_replace('/[^\x00-\x7F]+/S','',$txt); 

echo $txt; 
+0

Merci beaucoup qui fonctionne très bien :) Merci – Tristan

+0

été à la recherche pour cela. – Jason