我有一个脚本,用于从utf8编码的文本文件中读取数据。它使用fgetc()
逐个读取字符。当它读取简单的ascii字符时它很好但是当它来到š,č,ž...它无法正常工作。简化代码如下所示:
$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字符并将其写入输出?
更新:
问题是特殊字符保存在两个索引中,所以当我调用一个fgetc时,我没有得到整个字符。我现在的解决方案是当我得到序数大于127的字符时,我再次调用fgetc并从fgetc中的这两个值中创建一个字符串,然后我可以正确地写入加载的特殊字符。也许这不是最好的解决方案,但我无法找到更好的方法。
答案 0 :(得分:0)
你是否在循环之前设置了$ char?
while( $char !== false)
否则你永远不会启动while循环,因为你永远不会调用$char = fgetc($file);