浅谈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 相关文章推荐
Apache设置虚拟WEB
Oct 09 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
php读取xml实例代码
Jan 28 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
PHP访问Google Search API的方法
Mar 05 PHP
php获取远程文件的内容和大小
Nov 03 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
非常经典的PHP文件上传类分享
May 15 PHP
CI框架AR数据库操作常用函数总结
Nov 21 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 PHP
php格式文件打开的四种方法
Feb 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
discuz安全提问算法
2007/06/06 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
深入php socket的讲解与实例分析
2013/06/13 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
PHP加密解密函数详解
2015/10/28 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
jquery validate使用攻略 第四步
2010/07/01 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
教师党员思想汇报
2014/01/06 职场文书
学习2014年全国两会心得体会
2014/03/12 职场文书
财务管理专业自荐书
2014/09/02 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
学校国庆节活动总结
2015/03/23 职场文书
600字作文之感受大自然
2019/11/27 职场文书
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python