浅谈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中与数组相关的函数
Mar 22 PHP
php 动态执行带有参数的类方法
Apr 10 PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
php数组中删除元素的实现代码
Jun 22 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 PHP
php数组删除元素示例
Mar 21 PHP
PHP中批量生成静态html(命令行下运行PHP)
Apr 19 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
php 数据结构之链表队列
Oct 17 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 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简单的MVC框架实现方法
2015/12/01 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python读写Redis数据库操作示例
2014/03/18 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
如何验证python安装成功
2020/07/06 Python
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
办理护照介绍信
2014/01/16 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
民主生活会发言材料
2014/10/20 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
写给老师的保证书
2015/05/09 职场文书
运动会新闻报道稿
2015/07/22 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang