Cet article présente principalement le problème selon lequel fopen en PHP ne peut pas créer de fichiers avec des noms de fichiers chinois. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Le jeu de graphiques de la page Web précédente utilisait utf-8, et le fichier utilisait également utf-8. Ensuite, le problème est apparu lors de l'utilisation de fopen() pour créer un fichier avec un nom de fichier chinois. tout était tronqué !
J'ai vérifié beaucoup de documents et essayé de nombreuses méthodes, mais je n'ai pas pu le résoudre. Je pensais utiliser d'autres méthodes pour contourner ce problème, mais tout à coup, je me suis rendu compte que le codage de texte par défaut de Windows était ansi. , puis j'ai cherché à nouveau et confirmé. Pour comprendre cela, ma page Web doit également être codée en ansi afin que le nom du fichier créé ne soit pas tronqué.
Ensuite, j'ai commencé à vérifier, j'ai enregistré la page Web avec ansi et j'ai supprimé l'instruction chartset. C'était ok, mais le contenu de la page Web était tronqué. Plus tard, je me suis souvenu que cette page Web incluait également d'autres pages Web, alors je changé l'inclusion La page Web a également été modifiée en ansi pour enregistrer, haha tout va bien
La programmation est vraiment un travail qui repose sur l'accumulation Si je n'avais jamais vu que l'encodage par défaut de Windows est ansi, alors ce problème sera résolu en un rien de temps.
ps : < 8" http -equiv ="Content-type" > Cette balise méta doit être placée avant
Plus tard, j'ai pensé à une meilleure solution. La page Web est toujours codé et enregistré en utf-8, mais encodez simplement le paramètre de nom de fichier dans fopen() séparément. PHP a iconv(), un programme qui modifie l'encodage en convertissant utf-8 en gb2312, vous pouvez éviter les noms de fichiers chinois tronqués <.>
test.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> <title>标题:{title}</title> </head> <body> <b>此新闻的内容:</b>{content} </body> </html>
test.php
<?php //实际应用中很可能是查询数据库取内容。 $rows = array(array("替换标题1","替换内容1"),array("替换标题2","替换内容2")); $filename = "tmp.htm"; foreach($rows as $id => $val){ $title = $val[0]; $content = $val[1]; $pagename = "测试".$id.".html"; //对文件名的编码,避免中文文件名乱码 $pagename = iconv("UTF-8", "GBK", $pagename); //读取模板 $tmpfile = fopen($filename,"r"); $string = fread($tmpfile,filesize($filename)); $string = str_replace("{title}",$title,$string); $string = str_replace("{content}",$content,$string); fclose($tmpfile); //写新文件 $newpage = fopen($pagename,"w"); fwrite($newpage,$string); fclose($newpage); } echo "创建成功!"; ?>
fopenIntroduction détaillée et utilisation de la fonction
Explication détaillée de la différence entre php fopen() et file_get_contents()
10 contenus recommandés pour la fonction fopen
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!