Maison  >  Article  >  développement back-end  >  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

藏色散人
藏色散人original
2021-05-18 09:42:213032parcourir

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;

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;

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!

Déclaration:
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