Heim > Backend-Entwicklung > PHP-Tutorial > Ausführliche Erklärung des Problems, dass fopen in PHP keine Dateien mit chinesischen Dateinamen erstellen kann

Ausführliche Erklärung des Problems, dass fopen in PHP keine Dateien mit chinesischen Dateinamen erstellen kann

墨辰丷
Freigeben: 2023-03-28 08:00:01
Original
1445 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 es 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 ist immer noch in utf-8 kodiert und gespeichert, aber kodieren Sie den Dateinamenparameter einfach separat in fopen(). PHP verfügt über iconv(), ein Programm, das die Kodierung von utf-8 in gb2312 ändert, Sie können verstümmelte chinesische Dateinamen vermeiden

test.htm

<!DOCTYPE html>
<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, er wird für das Studium aller hilfreich sein.


Verwandte Empfehlungen:

So ändern Sie Dateinamen in PHP stapelweise

Beispiel für die von Python implementierte Funktion zum Suchen von Datendateien basierend auf Dateinamen

Python liest Dateinamen Rufen Sie die Methode zum Generieren einer Liste auf

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung des Problems, dass fopen in PHP keine Dateien mit 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