浅谈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 上传功能实例代码
Apr 13 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
Aug 21 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
解析php中反射的应用
Jun 18 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
php备份数据库类分享
Apr 14 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 PHP
PHP文件后缀不强制为.php方法
Mar 31 PHP
PHP 7.4 新语法之箭头函数实例详解
May 09 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原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
2020/09/22 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
Python操作Word批量生成文章的方法
2015/07/28 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
python中的常量和变量代码详解
2018/07/25 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
python集合删除多种方法详解
2020/02/10 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
英文留学推荐信范文
2014/01/25 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
交通事故调解协议书
2014/04/16 职场文书
应急管理培训方案
2014/06/12 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
全陪导游词开场白
2015/05/29 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
vue实现简单数据双向绑定
2021/04/28 Vue.js
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python