问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么让php文件可以使用中文文件名或者中文路径?

发布网友 发布时间:2022-04-22 13:07

我来回答

2个回答

懂视网 时间:2022-04-28 05:51

php文件名不能中文的解决办法:首先将网页用utf-8编码和保存;然后将fopen里的文件名参数通过iconv函数单独进行编码即可避免中文文件名乱码。

推荐:《PHP视频教程》

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://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 "创建成功!";
?>

热心网友 时间:2022-04-28 02:59

首先建议使用文文件名
因文会被
URL编码发送服务器端时候虽会解码和编码致解出来了
简单说URL文
常见浏览器默认会UTF-8编码进行编码发送服务器端而文
windows环境服务器解码URL时候却用gb2312编码进行解码样导致了没法得地址栏里输入文原文
所会提示找文件名了
定要用文
解决办法仅限本地浏览解决办法
浏览器打开internet选项菜单选择高级找
发送utf-8
URL把前面钩去掉确认再重启浏览器样地址栏里文会默认gb2312编码
进行发送样服务器端能正确找该文文件名文件了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
通达信主力指标公式汇总(2023版附源码) 有什么类似地下城与勇士的手机游戏 有没有类似于DNF的游戏 苹果手机类似地下城的游戏 有什么类似地下城与勇士的手机游戏 我的系统是WIN732,为什么玩不了光晕2,一点开就弹一个对话框出来说:无法... 玩诛仙电脑配置诛仙3要求电脑配置 ...永磁为什么要跌啊?东方财富金力永磁股吧?金力永磁股票最初..._百度... 怎么找回注销的微信号 如果把手机号码和微信号同时销户后期还能找回微信号吗? 仓储与库存有什么区别? 仓位和库位的区别 怎么调成中文,php php 怎么访问路径中有中文的php文件 PHP中文乱码问题 怎样解决PHP中文乱码问题 php文件名可以是中文吗 php如何解决中文乱码问题 PHP 输出简单的中文 乱码问题 如何解决PHP中文乱码问题? PHP中文乱码怎么解决? php中文网大家觉得怎么样啊,最近新出来的网站 QQ密保问题、绑定手机号码忘了,怎么办? qq密码忘了,绑定的有不是我的手机号怎么办 没有绑定手机号的qq如何找回密码? 我想把QQ密码绑定手机上 可是密保忘记了 怎么办那? vivo Y85怎么设置软件加密? qq密码忘了,绑定的手机号也不用了,应该怎么找回? 文件夹如何加密?什么软件好? 如何加密文件?求加密软件? QQ密保问题忘记了绑定的手机号又没有了该怎么办? 我的QQ号有密保,却忘了问题的答案,应怎么绑定手机? PHP如何获取中文字符串长度 utf8 php中中文如何转码 php判断是否有中文字符的两种方法 温度计上的0表示什么 PHP 查找中文字符串 温度计上的“0”刻度表示没有温度对吗 PHP中文乱码 温度计上的0表示什么? 温度计上的0表示什么? PHP判断是中文还是英文 温度计的规定 把什么规定为0度 温度计的规定 把什么规定为0度 PHP显示中文乱码 温度计和直尺上的0都是表示什么或什么? 温度计和直尺上的0都是表示什么或什么? 温度计上的零刻度线零表示没有。对还是错 温度计上的零刻度线零表示没有。对还是错 温度计的0度是如何规定的?为什么? 温度计的0度是如何规定的?为什么? 温度计上的0度代表什么?