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


Posted in PHP onFebruary 06, 2017

之前网页的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 相关文章推荐
新闻分类录入、显示系统
Oct 09 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
浅谈php和.net的区别
Sep 28 PHP
PHP多文件上传实例
Jul 09 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 PHP
PHP错误机制知识汇总
Mar 24 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 PHP
PHP 类与构造函数解析
Feb 06 #PHP
PHP在linux上执行外部命令的方法
Feb 06 #PHP
php获取指定数量随机字符串的方法
Feb 06 #PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
Feb 05 #PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 #PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 #PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
Feb 05 #PHP
You might like
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
php addslashes 函数详细分析说明
2009/06/23 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
python http接口自动化脚本详解
2018/01/02 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
Python中单例模式总结
2018/02/20 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
数控技术专业推荐信
2013/11/01 职场文书
人事助理岗位职责
2013/11/18 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
男女朋友协议书
2014/04/23 职场文书
会计求职信范文
2014/05/24 职场文书
任命书格式
2014/06/05 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
openEuler 搭建java开发环境的详细过程
2022/06/10 Servers