comment puis-je forcer PHP pour ajouter la nomenclature lors de l'utilisation de utf8_encode?
Voici ce que j'essaie de faire:
$Zip->addFromString($filename, utf8_encode($xml));
Malheureusement (pour moi), le résultat n'aura pas la marque de nomenclature au début.
Avez-vous essayé d'en ajouter un vous-même?
BOM UTF-8 semble être 0xEF 0xBB 0xBF
, vous pouvez donc l'attacher à votre chaîne après conversion en UTF-8.
$utf8_with_bom = chr(239) . chr(187) . chr(191) . $utf8_string;
Attention cependant. utf8_encode
veut une chaîne ISO-8859-1. Si vous travaillez avec XML, assurez-vous que le XML n'est pas déjà UTF-8 encodé. Les commentaires sur la documentation suggèrent que la fonction est cassée de différentes manières amusantes, donc vous ne devriez pas la jeter à moins que vous sachez que vous en ayez besoin.
Rappelez-vous, PHP sont simplement des octets stupides et inconnus. Aucun jeu de caractères ne leur est attaché, donc si les données de la chaîne sont déjà UTF-8, vous n'avez pas besoin pour exécuter la conversion.
En outre, l'article Wikipedia lié dit ceci:
Bien que la norme Unicode autorise la nomenclature en UTF-8, elle ne l'exige pas ni ne la recommande. L'ordre des octets n'a pas de sens en UTF-8 , donc une nomenclature ne sert qu'à identifier un flux de texte ou un fichier comme UTF-8 ou qu'il a été converti à partir d'un autre format doté d'une nomenclature.
Vous n'avez probablement pas besoin de vous soucier de la claquette BOM pour commencer.