ホームページ > バックエンド開発 > PHPチュートリアル > PHPでfopenが中国語のファイル名でファイルを作成できない問題について詳しく解説

PHPでfopenが中国語のファイル名でファイルを作成できない問題について詳しく解説

墨辰丷
リリース: 2023-03-28 08:00:01
オリジナル
1469 人が閲覧しました

この記事では、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>
ログイン後にコピー

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 で

ファイル名の一括変更

を実装する方法

Python で実装された ファイル名に基づいてデータ ファイルを検索する関数の例

Pythonはファイルを読み取ります 名前でリストを生成する方法


以上がPHPでfopenが中国語のファイル名でファイルを作成できない問題について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート