Heim > Backend-Entwicklung > PHP-Tutorial > php中的fread和fgetc获取文件内容的单位是字节还是字符,为什么fgetc读取不到字符?

php中的fread和fgetc获取文件内容的单位是字节还是字符,为什么fgetc读取不到字符?

WBOY
Freigeben: 2016-06-06 20:27:02
Original
1561 Leute haben es durchsucht

大家好,有个关于php处理文件的问题,请教大家。

我写了一段代码来体验fread()和fgetc(),文件test.txt中的内容为this is a test file. txt文件编码为utf-8格式

<code><?php $handle=fopen("F:\\test.txt", "r");

$data=fread($handle, 4);

echo $data;

?>
</code>
Nach dem Login kopieren
Nach dem Login kopieren

上面的代码,可以获取第一个字符t,如果fread第二个参数小于4就什么也读取不到了!

所以下面这个fgetc()也是空白内容。

<code><?php $handle=fopen("F:\\test.txt", "r");

$data=fgetc($handle);

echo $data;

?></code>
Nach dem Login kopieren
Nach dem Login kopieren

获取不到内容

我的电脑是windows系统

应该如何理解fread()的第二个参数及fgetc中的一个字符呢?

是因为文件编码格式的原因吗?

php处理文件应该如何注意处理文件编码格式?

谢谢!

回复内容:

大家好,有个关于php处理文件的问题,请教大家。

我写了一段代码来体验fread()和fgetc(),文件test.txt中的内容为this is a test file. txt文件编码为utf-8格式

<code><?php $handle=fopen("F:\\test.txt", "r");

$data=fread($handle, 4);

echo $data;

?>
</code>
Nach dem Login kopieren
Nach dem Login kopieren

上面的代码,可以获取第一个字符t,如果fread第二个参数小于4就什么也读取不到了!

所以下面这个fgetc()也是空白内容。

<code><?php $handle=fopen("F:\\test.txt", "r");

$data=fgetc($handle);

echo $data;

?></code>
Nach dem Login kopieren
Nach dem Login kopieren

获取不到内容

我的电脑是windows系统

应该如何理解fread()的第二个参数及fgetc中的一个字符呢?

是因为文件编码格式的原因吗?

php处理文件应该如何注意处理文件编码格式?

谢谢!

两种方式我都尝试过了,我测试都是没有问题的。我用的mac。所以初略判断应该是系统文件编码的关系。
另外,在fread的官方文档中有警告:
Warning:在区分二进制文件和文本文件的系统上(如 Windows)打开文件时,fopen() 函数的 mode 参数要加上 'b'。

同时,fgetc的官方文档中有这么一句提示:
Note: 此函数可安全用于二进制对象。

解决办法,文档中有提示。

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage