Das Problem, dass fopen in PHP keine Datei mit einem chinesischen Dateinamen erstellen kann

墨辰丷
Freigeben: 2023-03-28 06:40:01
Original
1770 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich das Problem vor, dass fopen in PHP keine Dateien mit chinesischen Dateinamen erstellen kann. Ich hoffe, dass es für alle hilfreich ist.

Der Chartsatz der vorherigen Webseite verwendete utf-8, und die Datei verwendete auch utf-8. Dann trat das Problem auf, als mit fopen() eine Datei mit einem chinesischen Dateinamen erstellt wurde war alles verstümmelt!

Ich habe viele Dokumente überprüft und viele Methoden ausprobiert, konnte es aber nicht lösen. Ich dachte darüber nach, andere Methoden zu verwenden, um dieses Problem zu umgehen, aber plötzlich fiel mir ein, dass die Standardtextkodierung von Windows Ansi ist , und dann habe ich erneut gesucht und bestätigt. Um dies zu verstehen, sollte meine Webseite auch ansi-codiert sein, damit der erstellte Dateiname nicht verstümmelt wird.

Dann habe ich mit der Überprüfung begonnen, die Webseite mit ANSI gespeichert und die Chartset-Anweisung entfernt. Es war in Ordnung, aber der Inhalt der Webseite war verstümmelt. Später fiel mir ein, dass diese Webseite auch andere Webseiten enthielt Das Include wurde geändert. Die Webseite wurde auch zum Speichern auf Ansi geändert, haha, alles ist in Ordnung.

Programmieren ist wirklich ein Job, der auf Akkumulation beruht. Wenn ich noch nie gesehen hätte, dass die Standardcodierung von Windows Ansi ist, dann ist dieses Problem im Handumdrehen gelöst.

ps: < meta content ="text/html; charset=utf- 8" http -equiv ="Content-type" > Dieses Meta-Tag muss vor platziert werden, um wirksam zu sein.

Später habe ich mir eine bessere Lösung überlegt. Die Webseite steht still codiert und gespeichert in utf-8, aber codieren Sie den Dateinamenparameter einfach separat in fopen(). PHP verfügt über iconv(), ein Programm, das die Codierung ändert. Durch die Konvertierung von utf-8 in gb2312 können Sie verstümmelte chinesische Dateinamen vermeiden 🎜>

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>
Nach dem Login kopieren

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 "创建成功!";
?>
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.


Verwandte Empfehlungen:

fopenDetaillierte Einführung und Verwendung der Funktion

Detaillierte Erklärung des Unterschieds zwischen PHP fopen() und file_get_contents()

10 empfohlene Inhalte für die Funktion fopen

Das obige ist der detaillierte Inhalt vonDas Problem, dass fopen in PHP keine Datei mit einem chinesischen Dateinamen erstellen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage