Readind utf8编码的文本文件

时间:2016-03-13 11:40:16

标签: php utf-8

我有一个脚本,用于从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中的这两个值中创建一个字符串,然后我可以正确地写入加载的特殊字符。也许这不是最好的解决方案,但我无法找到更好的方法。

1 个答案:

答案 0 :(得分:0)

你是否在循环之前设置了$ char?

while( $char !== false)

否则你永远不会启动while循环,因为你永远不会调用$char = fgetc($file);