Comment résoudre le problème de la sortie CSV tronquée de PHP

爱喝马黛茶的安东尼
Libérer: 2023-02-25 08:12:01
original
2694 Les gens l'ont consulté

Comment résoudre le problème de la sortie CSV tronquée de PHP

Lorsque nous travaillons sur un projet dans une langue étrangère, nous utiliserons l'encodage UTF-8. Cependant, lors de l'exportation d'un fichier CSV à l'aide de PHP, si les données écrites sont dans des langues étrangères telles que le japonais et le coréen utilisant le codage UTF-8, des caractères tronqués apparaîtront.

Pour résoudre le problème tronqué des fichiers CSV générés par PHP, il vous suffit d'afficher l'en-tête de nomenclature au début du fichier pour indiquer à Windows la méthode d'encodage du fichier CSV, afin qu'Excel puisse utiliser le bon encodage lors de l’ouverture du CSV.

Recommandations associées : "Tutoriel php"

Qu'est-ce que la BOM

dans l'encodage UCS Là est un caractère appelé "ZERO WIDTH NO-BREAK SPACE", et son codage est FEFF. FFFE est un caractère qui n'existe pas dans UCS, il ne devrait donc pas apparaître dans la transmission réelle. La spécification UCS recommande de transmettre les caractères "ZERO WIDTH NO-BREAK SPACE" avant de transmettre le flux d'octets. De cette façon, si le récepteur reçoit FEFF, cela indique que le flux d'octets est Big-Endian ; s'il reçoit FFFE, cela indique que le flux d'octets est Little-Endian.

Par conséquent, le caractère "ZERO WIDTH NO-BREAK SPACE" est également appelé BOM. UTF-8 ne nécessite pas de nomenclature pour indiquer l'ordre des octets, mais peut utiliser la nomenclature pour indiquer la méthode de codage. Le codage UTF-8 du caractère « ZERO WIDTH NO-BREAK SPACE » est EF BB BF. Ainsi, si le récepteur reçoit un flux d'octets commençant par EF BB BF, il sait qu'il est codé en UTF-8. Windows utilise BOM pour marquer l'encodage des fichiers texte.

Avant que tout soit sorti

print(chr(0xEF).chr(0xBB).chr(0xBF));
Copier après la connexion

Quelques en-têtes de nomenclature encodés en UTF

define ('UTF32_BIG_ENDIAN_BOM'   ,   chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));
define ('UTF32_LITTLE_ENDIAN_BOM',   chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));
define ('UTF16_BIG_ENDIAN_BOM' ,   chr(0xFE) . chr(0xFF));
define ('UTF16_LITTLE_ENDIAN_BOM',   chr(0xFF) . chr(0xFE));
define ('UTF8_BOM'   ,   chr(0xEF) . chr(0xBB) . chr(0xBF));
Copier après la connexion

Code complet :

header('Expires: 0');
header('Cache-control: private');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Description: File Transfer');
header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment;filename=Customers_Export.csv');
echo "\xEF\xBB\xBF"; // UTF-8 BOM
// print(chr(0xEF).chr(0xBB).chr(0xBF));
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal