Maison > développement back-end > Problème PHP > Que faire si php génère des caractères csv tronqués

Que faire si php génère des caractères csv tronqués

藏色散人
Libérer: 2023-03-09 18:30:01
original
3082 Les gens l'ont consulté

php génère des caractères csv tronqués car le fichier de sortie au format csv n'a pas de nomenclature. La solution est d'utiliser la nomenclature pour indiquer l'encodage des caractères, avec un code tel que "header("Content-type:text. /csv;charset=gb2312"); ".

Que faire si php génère des caractères csv tronqués

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Résolution des caractères chinois tronqués dans Fichier csv de sortie PHP

Les fichiers de téléchargement PHP utilisent souvent une sortie de flux d'octets. Par conséquent, le code couramment utilisé pour télécharger le format csv est le suivant :

header("Content-Type: application/force-download"); 
header("Content-type:text/csv;charset=gb2312"); 
header("Content-Disposition:filename=打开邮件导出".date("YmdHis").".csv"); 
echo "收件人邮箱,收件人姓名,发送时间\r";
 ob_end_flush();
 foreach($list as $rs) { 
echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r"; flush();
 }
 exit;
Copier après la connexion

Il est normal que le fichier csv téléchargé de cette manière soit ouvert avec un éditeur tel que Notepad ou sublime text, mais il sera tronqué lorsqu'il est ouvert avec Excel, car le fichier de sortie au format csv est Il n'y a pas de nomenclature. Il existe de nombreuses opinions sur la nomenclature. Dans des circonstances normales, la nomenclature doit être supprimée en PHP, mais les fichiers csv doivent utiliser la nomenclature pour indiquer l'encodage des caractères.

La solution est la suivante :

header("Content-Type: application/force-download");
header("Content-type:text/csv;charset=gb2312");
header("Content-Disposition:filename=打开邮件导出".date("YmdHis").".csv");
echo chr(0xEF).chr(0xBB).chr(0xBF);
echo "收件人邮箱,收件人姓名,发送时间\r";
ob_end_flush();
foreach($list as $rs)
{
   echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r";
   flush();
}
exit;
Copier après la connexion

En raison de la différence entre les sauts de ligne sous Linux et Windows. Si le code ci-dessus réagit mal sur le serveur Linux, vous pouvez remplacer "r" par "rn".

Apprentissage recommandé : "Tutoriel vidéo PHP"

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:
php
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