浅谈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 19 PHP
php下删除字符串中HTML标签的函数
Aug 27 PHP
php array_walk() 数组函数
Jul 12 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
Jul 20 PHP
php错误级别的设置方法
Jun 17 PHP
php文件读取方法实例分析
Jun 20 PHP
PHP设置进度条的方法
Jul 08 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP快速推送微信模板消息
Apr 14 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
Yii2语言国际化自动配置详解
Aug 22 PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 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创建Cookie数组的详解
2013/07/03 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
Python 获取当前所在目录的方法详解
2017/08/02 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
基于python检查矩阵计算结果
2020/05/21 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
中海讯通笔试题
2015/09/15 面试题
母亲节感恩寄语
2014/02/21 职场文书
求职信怎么写范文
2014/05/26 职场文书
2015年班组工作总结
2015/04/20 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
mysql查找连续出现n次以上的数字
2022/05/11 MySQL