浅谈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 相关文章推荐
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
php与XML、XSLT、Mysql的结合运用实现代码
Nov 19 PHP
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
关于crontab的使用详解
Jun 24 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
Yii2数据库操作常用方法小结
May 04 PHP
php实现页面纯静态的实例代码
Jun 21 PHP
php优化查询foreach代码实例讲解
Mar 24 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
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
[03:54]DOTA2英雄梦之声_第06期_昆卡
2014/06/23 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python求出0~100以内的所有素数
2018/01/23 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
研究生自荐信
2013/10/09 职场文书
接受捐赠答谢词
2014/01/27 职场文书
电大本科自我鉴定
2014/02/05 职场文书
就业表自我评价分享
2014/02/06 职场文书
海飞丝广告词
2014/03/20 职场文书
学习退步检讨书
2014/09/28 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
Python实现文字pdf转换图片pdf效果
2022/04/03 Python
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python