淺談php中fopen不能創(chuàng)建中文文件名文件的問(wèn)題
之前網(wǎng)頁(yè)的chartset用的是utf-8,文件也用utf-8,然后用fopen()創(chuàng)建一個(gè)中文文件名的文件時(shí)問(wèn)題就出來(lái)了,文件名都是亂 碼!
查看了很多文檔試了不少方法都解決不了,本來(lái)想著用別的方法繞過(guò)這個(gè)問(wèn)題,忽然腦子里閃過(guò)Windows默認(rèn)的文字編碼是ansi,然后再 baidu了一下,證實(shí)了這點(diǎn),所以我的網(wǎng)頁(yè)也應(yīng)該是ansi編碼才能使創(chuàng)建的文件名不會(huì)是亂碼。
接著就著手驗(yàn)證,把網(wǎng)頁(yè)都用ansi保存,去掉chartset語(yǔ)句,果然ok了,但是網(wǎng)頁(yè)的內(nèi)容就成亂碼了,后來(lái)想起,這個(gè)網(wǎng)頁(yè)還include 了別的網(wǎng)頁(yè),把include的網(wǎng)頁(yè)也改成ansi保存,哈哈萬(wàn)事ok
編程這個(gè)工作真的很靠積累,如果我以前沒(méi)看過(guò)Windows默認(rèn)編碼是ansi,那這個(gè)問(wèn)題就不知何年何月才能解決了
ps:< meta content ="text/html; charset=utf-8" http -equiv ="Content-type" > 這個(gè)meta標(biāo)記一定要放在<title></title>之前才有效的
后來(lái)又想到了一個(gè)更好的解決方法,網(wǎng)頁(yè)還是用utf-8編碼和保存,只是fopen()里的文件名參 數(shù)單獨(dú)給它編下碼就行,php有iconv() 這個(gè)改換編碼的程序,把utf-8轉(zhuǎn)成 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>標(biāo)題:{title}</title>
</head>
<body>
<b>此新聞的內(nèi)容:</b>{content}
</body>
</html>
test.php
<?php
//實(shí)際應(yīng)用中很可能是查詢數(shù)據(jù)庫(kù)取內(nèi)容。
$rows = array(array("替換標(biāo)題1","替換內(nèi)容1"),array("替換標(biāo)題2","替換內(nèi)容2"));
$filename = "tmp.htm";
foreach($rows as $id => $val){
$title = $val[0];
$content = $val[1];
$pagename = "測(cè)試".$id.".html";
//對(duì)文件名的編碼,避免中文文件名亂碼
$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);
//寫(xiě)新文件
$newpage = fopen($pagename,"w");
fwrite($newpage,$string);
fclose($newpage);
}
echo "創(chuàng)建成功!";
?>
以上這篇淺談php中fopen不能創(chuàng)建中文文件名文件的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- php 使用fopen函數(shù)創(chuàng)建、打開(kāi)文件詳解及實(shí)例代碼
- PHP使用fopen與file_get_contents讀取文件實(shí)例分享
- PHP中通過(guò)fopen()函數(shù)訪問(wèn)遠(yuǎn)程文件示例
- php使用fopen創(chuàng)建utf8編碼文件的方法
- PHP 獲取遠(yuǎn)程網(wǎng)頁(yè)內(nèi)容的代碼(fopen,curl已測(cè))
- php file_put_contents()功能函數(shù)(集成了fopen、fwrite、fclose)
- PHP fopen中文文件名亂碼問(wèn)題解決方案
相關(guān)文章
PHP下ajax跨域的解決方案之jsonp實(shí)例分析
這篇文章主要介紹了PHP下ajax跨域的解決方案之jsonp,結(jié)合實(shí)例形式分析了PHP ajax跨域的解決方案jsonp相關(guān)原理、實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-03-03
php中利用explode函數(shù)分割字符串到數(shù)組
這篇文章主要介紹了php中利用explode函數(shù)分割字符串到數(shù)組,需要的朋友可以參考下2014-02-02
php+ajax實(shí)現(xiàn)仿百度查詢下拉內(nèi)容功能示例
這篇文章主要介紹了php+ajax實(shí)現(xiàn)仿百度查詢下拉內(nèi)容功能,結(jié)合具體實(shí)例形式分析了php結(jié)合ajax動(dòng)態(tài)查詢功能的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10
PHP 事務(wù)處理數(shù)據(jù)實(shí)現(xiàn)代碼
PHP 事務(wù)處理數(shù)據(jù)實(shí)現(xiàn)代碼,需要的朋友可以參考下。2010-05-05
MySQL時(shí)間字段究竟使用INT還是DateTime的說(shuō)明
今天解析DEDECMS時(shí)發(fā)現(xiàn)deder的MYSQL時(shí)間字段,都是用INT類(lèi)型,隨后又在網(wǎng)上找到這篇文章,看來(lái)如果時(shí)間字段有參與運(yùn)算,用int更好,一來(lái)檢索時(shí)不用在字段上轉(zhuǎn)換運(yùn)算,直接用于時(shí)間比較!二來(lái)如下所述效率也更高2012-02-02
php實(shí)現(xiàn)根據(jù)詞頻生成tag云的方法
這篇文章主要介紹了php實(shí)現(xiàn)根據(jù)詞頻生成tag云的方法,涉及php分析與操作字符串以及標(biāo)簽云的生成技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04

