浅谈php中fopen不能创建中文文件名文件的问题

发布时间 - 2026-01-10 22:52:45    点击率:

之前网页的chartset用的是utf-8,文件也用utf-8,然后用fopen()创建一个中文文件名的文件时问题就出来了,文件名都是乱 码!

查看了很多文档试了不少方法都解决不了,本来想着用别的方法绕过这个问题,忽然脑子里闪过Windows默认的文字编码是ansi,然后再 baidu了一下,证实了这点,所以我的网页也应该是ansi编码才能使创建的文件名不会是乱码。

接着就着手验证,把网页都用ansi保存,去掉chartset语句,果然ok了,但是网页的内容就成乱码了,后来想起,这个网页还include 了别的网页,把include的网页也改成ansi保存,哈哈万事ok

编程这个工作真的很靠积累,如果我以前没看过Windows默认编码是ansi,那这个问题就不知何年何月才能解决了

ps:< meta content ="text/html; charset=utf-8" http -equiv ="Content-type" > 这个meta标记一定要放在<title></title>之前才有效的

后来又想到了一个更好的解决方法,网页还是用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中fopen不能创建中文文件名文件的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# php  # fopen  # 中文文件名  # php 使用fopen函数创建、打开文件详解及实例代码  # PHP使用fopen与file_get_contents读取文件实例分享  # PHP中通过fopen()函数访问远程文件示例  # php使用fopen创建utf8编码文件的方法  # PHP 获取远程网页内容的代码(fopen  # curl已测)  # php file_put_contents()功能函数(集成了fopen、fwrite、fclose  # PHP fopen中文文件名乱码问题解决方案  # 这个问题  # 给大家  # 的是  # 都是  # 放在  # 看了  # 真的很  # 就行  # 希望能  # 然后再  # 就可  # 这篇  # 能使  # 都用  # 浅谈  # 脑子里  # 解决方法  # 也应  # 试了  # 给它 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  利用vue写todolist单页应用  如何用wdcp快速搭建高效网站?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  JavaScript如何操作视频_媒体API怎么控制播放  如何在橙子建站中快速调整背景颜色?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何用PHP快速搭建高效网站?分步指南  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何用景安虚拟主机手机版绑定域名建站?  北京网站制作公司哪家好一点,北京租房网站有哪些?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel如何发送系统通知?(Notification渠道示例)  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  如何批量查询域名的建站时间记录?  Android Socket接口实现即时通讯实例代码  如何彻底卸载建站之星软件?  如何快速搭建个人网站并优化SEO?  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  如何在IIS中配置站点IP、端口及主机头?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何生成腾讯云建站专用兑换码?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  香港服务器部署网站为何提示未备案?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  如何用PHP工具快速搭建高效网站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  如何快速搭建安全的FTP站点?  Android使用GridView实现日历的简单功能  三星网站视频制作教程下载,三星w23网页如何全屏?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  简单实现Android验证码  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  JavaScript常见的五种数组去重的方式  Android实现代码画虚线边框背景效果