浅谈php中fopen不能创建中文文件名文件的问题
网络编程 2021-07-05 08:23www.168986.cn编程入门
狼蚁网站SEO优化长沙网络推广就为大家带来一篇浅谈php中fopen不能创建中文文件名文件的问题。长沙网络推广觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随长沙网络推广过来看看吧
之前网页的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://.w3./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不能创建中文文件名文件的问题就是长沙网络推广分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程