浅谈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 相关文章推荐
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
PHP5 字符串处理函数大全
Mar 23 PHP
多个PHP中文字符串截取函数
Nov 12 PHP
10个超级有用值得收藏的PHP代码片段
Jan 22 PHP
php文件上传简单实现方法
Jan 24 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
PHP响应post请求上传文件的方法
Dec 17 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
PHP PDOStatement::rowCount讲解
Feb 01 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
Mar 14 PHP
Laravel5.1 框架路由基础详解
Jan 04 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 Xdebug的安装与使用详解
2013/06/20 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
使用vue构建移动应用实战代码
2017/08/02 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
Python 列表list使用介绍
2014/11/30 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
django中使用POST方法获取POST数据
2019/08/20 Python
详解Python流程控制语句
2020/10/28 Python
python 读取串口数据的示例
2020/11/09 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
护理职业生涯规划书
2014/01/24 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
2014年五一劳动节社区活动总结
2014/04/14 职场文书
出国英文推荐信
2014/05/10 职场文书
中秋手机店促销方案
2014/06/16 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
党员自我评价范文2015
2015/03/03 职场文书
Windows server 2012搭建FTP服务器
2022/04/29 Servers