浅谈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生成自己的LOG文件
Oct 09 PHP
我的论坛源代码(三)
Oct 09 PHP
PHP4实际应用经验篇(6)
Oct 09 PHP
php中变量及部分适用方法
Mar 27 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
Sep 15 PHP
PHP 透明水印生成代码
Aug 27 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
PHP-FPM之Chroot执行环境详解
Aug 03 PHP
PHPCMS忘记后台密码的解决办法
Oct 30 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
PHP面向对象类型约束用法分析
Jun 12 PHP
基于php+MySql实现学生信息管理系统实例
Aug 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备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
学习vue.js计算属性
2016/12/03 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
JS实现分页导航效果
2020/02/19 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
使用Python求解最大公约数的实现方法
2015/08/20 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
PyTorch中的C++扩展实现
2020/04/02 Python
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
个人求职信范文分享
2014/01/31 职场文书
学生会个人自荐书范文
2014/02/12 职场文书
森林防火标语
2014/06/23 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
好好学习保证书
2015/02/26 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
重阳节主题班会
2015/08/17 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript
vue动态绑定style样式
2022/04/20 Vue.js
Python可视化神器pyecharts绘制水球图
2022/07/07 Python