2011-02-03 29 views
2

這裏是我的代碼:在PHP中,當我使用FWRITE,我沒有得到正確的字符集

<?php 
    header("Content-Type: text/html; charset=UTF-8"); 
    header("Content-Type: application/x-javascript; charset=UTF-8"); 

    $fName = "demo.txt"; 
    $str = "óé"; 
    fid = fopen($fName, 'wb') or die("can't open file"); // Open file 

    fwrite($fid, $str); // Write to file 
    fclose($fid);   // Close file 
?> 

到屏幕上,輸出是:

óéü 

當我打開我得到的文件:

óéü 

我想使用fwrite保存大量數據,但字符在保存文件時沒有正確編碼。

在此先感謝。

+1

也許試試[這個建議](http://www.php.net/manual/en/function.fwrite.php#73764) – Phil 2011-02-03 06:10:11

+0

對不起,很長的延遲。事實證明,VIEWER是個問題。我有幾個文本編輯器,根據我使用的是哪一個,我會得到UTF-8字符集或NOT!我用Coda完成了一切,並沒有任何其他問題。 – zbinsd 2011-08-10 18:28:18

回答

2

你用什麼程序「打開」文件?該計劃可能是問題所在。

3

fwrite存儲字符串二進制。它不做任何字符集轉換。 它更可能是你的PHP腳本是在一個錯誤的字符集,因此原來的"óéü"字符串。如果您無法自行調試,請告訴我們bin2hex($str)bin2hex(file_get_contents('demo.txt'))

有一些通用的選項來解決此類問題:

  • 使用utf8_encode($str)保存之前。
  • 編寫UTF-8 BOM到輸出文件第一fwrite($f, "\xEF\xBB\xBF")
  • 正確的轉換與iconv()
  • 或調整PHP腳本本身recode L1..UTF8 script.php
0

首先,將utf_encode和fwrite裏面,像這樣:

<?php 

$fName = "demo.txt"; 
$str = "óé"; 
fid = fopen($fName, 'wb') or die("can't open file"); // Open file 

fwrite($fid, utf_encode($str)); // Write to file 
fclose($fid);   // Close file 
?> 

接下來,請記住用UTF-8 without BOM編碼保存您的PHP腳本。使用任何高級代碼編輯器(如Notepad ++)來執行此操作。

相關問題