この記事では、PHP の fopen が中国語のファイル名でファイルを作成できない問題を主に紹介します。興味のある方はぜひ参考にしてください。
前のWebページのチャートセットはutf-8を使用しており、ファイルもutf-8を使用していましたが、fopen()を使用して中国語のファイル名でファイルを作成したときに問題が発生しました。
多くのドキュメントを確認し、多くの方法を試しましたが、解決できませんでした。当初は他の方法を使用してこの問題を回避しようと考えていましたが、Windowsのデフォルトのテキストエンコーディングがansiであることに突然気づきました。そこで、Baidu で検索して確認したところ、作成したファイル名が文字化けしないように、Web ページも ANSI エンコードする必要がありました。
その後、検証を開始し、Web ページを ansi に保存し、chartset ステートメントを削除しました。問題はありませんでしたが、後でこの Web ページに他の Web ページも含まれていることを思い出したので、含まれている Web ページを変更しました。 ansi で保存します、笑すべて問題ありません
プログラミングは本当に積み重ねに依存する仕事です。Windows のデフォルトのエンコーディングが ansi であることをこれまで知らなかったら、どれくらい時間がかかるかわかりません。この問題を解決するには
ps: < メタコンテンツ ="text/html; charset=utf-8" http -equiv ="Content-type" > の前に配置する必要があります。 ;title> を有効にするには
その後、Web ページは引き続き UTF-8 でエンコードされて保存されます。fopen() のファイル名パラメーターを個別にエンコードするだけです。 )、utf-8 を gb2312 に変換するプログラムは、中国語のファイル名の文字化けを回避できます<!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>
<?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 "创建成功!";
?>
関連する推奨事項:
PHP で
を実装する方法
Python で実装された ファイル名に基づいてデータ ファイルを検索する関数の例
Pythonはファイルを読み取ります 名前でリストを生成する方法
以上がPHPでfopenが中国語のファイル名でファイルを作成できない問題について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。