2012-01-25 195 views
1

我從頁面獲取UTF-8文本行,然後轉儲到文件中。原始頁面中的文字顯示正常。但是,輸出文件中的文本出現亂碼!讀取UTF-8文本行並將它們寫入文件

我嘗試:

$myFile = "testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
$pageContent = file_get_contents("page.html"); 
//Here: use regex to grab the title ... 
$stringData = $title."\n"; 
fwrite($fh, utf8_encode($stringData)); 
fclose($fh); 

之前任何內容寫入文件。我將文件保存爲UTF-8,我也保存它爲Unicode,我仍然得到密文爲:

ÊãäíÇÊíááÌãíÚ

我沒有使用PHP5

任何幫助將不勝感激...

+0

'我沒有使用PHP5' - 對此有沒有什麼可以做的? PHP4絕望地過時並且不支持許多安全功能。我知道這並不總是可以升級(我有一個特定的平臺,我自己有這個永久性的問題),但如果你可以升級,你絕對必須... – DaveRandom

+0

暫時不使用PHP5 ... – user311509

回答

7

請勿使用utf8_encode

對不起,這只是被濫用的方式太頻繁。
您的文本已經在UTF-8中。*您不需要再次將其編碼爲UTF-8。
utf8_encode Latin1編碼的文本轉換爲UTF-8。您的文本不是Latin1編碼的。這就是爲什麼它擰緊。只需讀寫文本,完成。不需要編碼轉換或重新編碼。

*假設page.html是以UTF-8編碼的。從你所說的話來看,似乎是這樣。

+0

我想你應該補充一點,爭奪OP看到的字符可能是在非utf8查看器中查看utf8輸出的結果(如可能是命令行)。 [附註:你對我的帖子完全正確,我有一個腦袋;後刪除] –

+0

工作........ – user311509

0

它看起來像你是雙重編碼。如果您閱讀了utf8_encode文檔,您會發現它旨在將ISO-8859-1字符串編碼爲UTF-8。如果你已經有了一個UTF-8字符串,你不應該在其上運行這個函數;否則它會將其解釋爲ISO-8859-1並執行不正確的編碼。

相關問題