微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

上传文本文件时,PHP 5.6中的文件大小似乎不计算Unicode字母,但fread与Unicode字母配合正常

如何解决上传文本文件时,PHP 5.6中的文件大小似乎不计算Unicode字母,但fread与Unicode字母配合正常

我通过Android应用程序将txt文件上传到服务器上

上传文件不包含任何Unicode字母时,以下代码PHP 5.6中可以正常工作:

$ReadFile_Resource = fopen($_FILES['uploaded_file']['tmp_name'],"r");
$ReadFile = fread($ReadFile_Resource,filesize($_FILES['uploaded_file']['tmp_name']));
fclose($ReadFile_Resource);     

如果文本文件中间有一个Unicode字母,则$ReadFile不包含最后一个字母(在我的情况下,它是字母'W',而不是Unicode字母)
换句话说,似乎一切正常,但文件大小更小(减1)
关键是真正读取了Unicode字母,但没有读取最后一个字母(不是Unicode字母的字母“ A”)

再次在文本文件的中间有两个Unicode字母时,则$ReadFile不包含最后2个字母(在我的情况下为“ BA”字母,而不是Unicode字母)
换句话说,似乎一切正常,但文件大小较小(这次为负2)
关键是要再次真正读取Unicode字母,但不能读取最后2个字母(在我的情况下是非Unicode字母的字母“ BA”)

似乎文件大小不计算Unicode字母,但fread可以很好地与Unicode字母一起使用

编辑:
由于文本文件的大小小于1k,因此我使用以下代码解决了该问题,但是它没有用,并且存在相同的确切问题:

$ReadFile = fread($ReadFile_Resource,1000000);

Edit2:
我也测试了以下代码,与先前的问题完全相同,它再无用了:

$ReadFile = file_get_contents($_FILES['uploaded_file']['tmp_name']);

Edit3:
我检查了上传文件文件大小
由于每个Unicode字母均为2个字节,因此以下变量未显示真实值
换句话说,当一个Unicode字母不包含2时:

$_FILES['uploaded_file']['size']

这就是每个Unicode字母的问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。