浅谈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 相关文章推荐
php+mysql分页代码详解
Mar 27 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
PHP中实现crontab代码分享
Mar 26 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 PHP
PHP实现QQ登录实例代码
Jan 14 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
php四种定界符详解
Feb 16 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 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
4.与数据库的连接
2006/10/09 PHP
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
php下通过POST还是GET来传值
2008/06/05 PHP
写出高质量的PHP程序
2012/02/04 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
php include和require的区别深入解析
2013/06/17 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
javascript连续赋值问题
2015/07/08 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
十条建议帮你提高Python编程效率
2016/02/16 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
python opencv之SIFT算法示例
2018/02/24 Python
python实现百度语音识别api
2018/04/10 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
python实现梯度下降算法
2020/03/24 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
利用python开发app实战的方法
2019/07/09 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
超市优秀员工事迹材料
2014/05/01 职场文书
会计求职简历自我评价
2015/03/10 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang