我有一個腳本從utf8編碼的文本文件讀取數據。它用fgetc()
逐個讀取字符。當它讀取簡單的ascii字符時很好,但是當涉及到š,č,ž......它無法正常工作。簡化的代碼如下所示:Readind utf8編碼的文本文件
$file = fopen($path);
$char = fgetc($file);
while($char !== false) {
$char = fgetc($file);
fwrite(STDOUT, $char);
}
我試圖用
header('Content-type: text/plain; charset=utf-8');
在腳本的開始,但它仍然無法正常工作。我也試過使用utf8_encode($char)
或utf8_decode($char)
,它沒有幫助。有沒有簡單的解決方案如何讀取utf8字符並將它們寫入輸出?
UPDATE:
的問題是,特殊字符保存在兩個指標,所以當我把一個龜etc我沒有得到整個字符。我現在的解決方案是,當我得到一個127以上的序號的字符時,我再次調用fgetc,並從fgetc的這兩個值中創建一個字符串,然後我可以正確地fwrite加載的特殊字符。也許這不是最好的解決方案,但我無法弄清楚什麼更好。
什麼不正常? –
問題是特殊字符被保存在兩個索引中,所以當我調用一個'fgetc'時,我沒有得到整個字符。我現在的解決方案是,當我得到一個127以上的序號的字符時,我再次調用'fgetc',並從'fgetc'中的這兩個值中創建一個字符串,然後我就可以正確'fwrite'加載特殊字符。也許這不是最好的解決方案,但我無法弄清楚什麼更好。 – sykatch
請使用該信息更新您的問題。我有一個想法可以幫助你 –