PHP ファイル名を中国語にできない問題の解決策: まず、Web ページを UTF-8 でエンコードして保存し、文字化けを避けるために、iconv 関数を使用して fopen のファイル名パラメーターを個別にエンコードします。中国語のファイル名。
推奨: 「PHP ビデオ チュートリアル 」
PHP で fopen が中国語のファイルを作成できない問題ファイル名
前の Web ページのチャートセットは utf-8 を使用しており、ファイルも utf-8 を使用していましたが、fopen() を使用して中国語のファイル名のファイルを作成したときに問題が発生しました。ファイル名が文字化けしていました!
多くのドキュメントを確認し、さまざまな方法を試しましたが、解決できませんでした。当初は他の方法を使用してこの問題を回避しようと考えていましたが、突然、Windows のデフォルトのテキスト エンコーディングが問題であることに気づきました。これを理解するには、作成したファイル名が文字化けしないように、Web ページも ANSI エンコードする必要があります。
その後、検証を開始しました。ANSI で Web ページを保存し、chartset ステートメントを削除しました。問題はありませんでしたが、Web ページのコンテンツが文字化けしました。後で、この Web ページには他の Web ページも含まれていることを思い出したので、インクルードを変更しました ウェブページも保存するために ansi に変更されました、笑すべてOKです
プログラミングは本当に積み重ねに依存する仕事です。Windows のデフォルトのエンコーディングが ansi であることを知らなかったら、この問題は長い間解決されないでしょう
ps: f12967df63443ea537a7297ed50f8542 このメタ タグは次のようにする必要があります。 b2386ffb911b14667cb8f0f91ea547a76e916e0f7d1e588d4f442bf645aedb2f に配置します
以前はのみ機能しました。その後、より良い解決策を考えました。Web ページはまだエンコードされ、utf-8 で保存されています。それは、ファイルをエンコードするだけの問題です。 fopen() でファイル名パラメータを別途指定します。PHP には iconv() というエンコーディングを変更するプログラムがあります。中国語のファイル名の文字化けを避けるために、utf-8 を gb2312 に変換します。
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 "创建成功!"; ?>
以上がPHPファイル名を中国語にできない問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。