php使用fopen創(chuàng)建utf8編碼文件的方法
本文實(shí)例講述了php使用fopen創(chuàng)建utf8編碼文件的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
一般來(lái)說(shuō),如果我們直接使用fopen創(chuàng)建會(huì)發(fā)現(xiàn)文件編碼都不是uft-8的了,那么如果要?jiǎng)?chuàng)建uft8文件我們需要進(jìn)行一些技術(shù)處理。具體步驟如下:
使用PHP創(chuàng)建編碼格式為utf-8文件的方法:
第一步:新建一個(gè)txt文件,打開(kāi),文件->另存為xxx.php,并將編碼改為UTF-8,保存。
第二部:在php文件中加入如下代碼:
$filename=rand(100,999).".txt";//定義好要?jiǎng)?chuàng)建的文件名稱(chēng)和文件格式(按需要自己改)
$str = "PHP學(xué)習(xí)網(wǎng)[m.fzitv.net]";//待寫(xiě)入新建文件中的內(nèi)容
if (!$head=fopen($filename, "w+")) {//以讀寫(xiě)的方式打開(kāi)文件,將文件指針指向文件頭并將文件大小截為零,如果文件不存在就自動(dòng)創(chuàng)建
die("嘗試打開(kāi)文件[".$filename."]失敗!請(qǐng)檢查是否擁有足夠的權(quán)限!創(chuàng)建過(guò)程終止!");
}
if (fwrite($head,$str)==false) {//執(zhí)行寫(xiě)入文件
fclose($head);
die("寫(xiě)入內(nèi)容失敗!請(qǐng)檢查是否擁有足夠的權(quán)限!寫(xiě)入過(guò)程終止!");
}
echo "成功創(chuàng)建UTF-8格式文件[".$filename."],并向該文件中寫(xiě)入了內(nèi)容:".$str;
fclose($head);
?>
使用這種方法創(chuàng)建UTF-8編碼文件的關(guān)鍵點(diǎn):
① 保證PHP代碼文件本身的編碼格式為UTF-8
② php代碼文件的編碼格式是什么則創(chuàng)建出來(lái)的文件編碼也是什么
③ 顯示出現(xiàn)亂碼的問(wèn)題
控制頁(yè)面顯示的因素主要有三個(gè):
1.HTML代碼控制:標(biāo)準(zhǔn)HTML網(wǎng)頁(yè)文件中的head標(biāo)簽內(nèi)部包含了這一句代碼<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,代碼中charset=utf-8這句就是告訴瀏覽器要以u(píng)tf-8格式將網(wǎng)頁(yè)中的內(nèi)容顯示出來(lái)。
2.PHP代碼控制:如果在PHP文件的開(kāi)頭加上header("content-Type: text/html; charset=utf-8");這句代碼,也是為了告訴瀏覽器要以u(píng)tf-8格式將網(wǎng)頁(yè)中的內(nèi)容顯示出來(lái)。(注:這句代碼之前不能有類(lèi)似echo的輸出)
3.文件物理存儲(chǔ)屬性控制:用記事本打開(kāi)一個(gè)文件,文件->另存為,你在“編碼”中所看到的就是當(dāng)前文件的真正的編碼
補(bǔ)充一個(gè)fopen例子
$f=fopen("test.txt", "wb");
$text=utf8_encode("a!");
//先用函數(shù)utf8_encode將所需寫(xiě)入的數(shù)據(jù)變成UTF編碼格式。
$text="\xEF\xBB\xBF".$text;
//"\xEF\xBB\xBF",這串字符不可缺少,生成的文件將成為UTF-8格式,否則依然是ANSI格式。
fputs($f, $text);
//寫(xiě)入。
fclose($f);
?>
這樣創(chuàng)建出的文件編碼格式確實(shí)是utf-8,但是放在文件中的漢字出現(xiàn)了亂碼的現(xiàn)象,經(jīng)過(guò)一番調(diào)試,代碼如下:
$ctxtsubmit="好呀";
$f=fopen("../".$file, "wb");
//$text=utf8_encode($ctxtsubmit);
//先用函數(shù)utf8_encode將所需寫(xiě)入的數(shù)據(jù)變成UTF編碼格式。
$text="\xEF\xBB\xBF".$ctxtsubmit;
//"\xEF\xBB\xBF",這串字符不可缺少,生成的文件將成為UTF-8格式,否則依然是ANSI格式。
fputs($f, $text);
//寫(xiě)入。
fclose($f);
?>
希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
解析mysql中UNIX_TIMESTAMP()函數(shù)與php中time()函數(shù)的區(qū)別
本篇文章是對(duì)mysql中UNIX_TIMESTAMP()函數(shù)與php中time()函數(shù)的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
對(duì)Session和Cookie的區(qū)分與解釋
對(duì)Session和Cookie的區(qū)分與解釋...2007-03-03
PHP基于php_imagick_st-Q8.dll實(shí)現(xiàn)JPG合成GIF圖片的方法
這篇文章主要介紹了PHP基于php_imagick_st-Q8.dll實(shí)現(xiàn)JPG合成GIF圖片的方法,需要的朋友可以參考下2014-07-07
php include的妙用,實(shí)現(xiàn)路徑加密
用這種方法比較繁瑣,只能隱藏后臺(tái)腳本的路徑,前端的腳本路徑仍然可以在源文件中看得到(baseref) 在地址欄上看到的地址都是index.php?xxxxxxxx2008-07-07

