PHP:file()每个字符前面都有“\ 0”

时间:2011-07-11 18:21:37

标签: php file ini autohotkey

我有一个由我正在处理的团队的另一个成员编写的AutoHotKey程序创建的INI文件。我试图将文件作为数组读入PHP。我正在使用内置的file()函数。当我读入文件然后使用var_dump($file)显示它时($file是正在读取文件的数组的名称)每个字符前面都有一个“\ 0”(这是一个空的字符)。每个人都有过这样的事吗?我在阅读文件后可以删除所有空字符,但我更愿意找到解决方案。

当我在文本编辑器中打开ini文件时,它打开就好了。我还使用file()函数读取了Windows创建的desktop.ini文件并按预期读入,字符前面没有“\ 0”

2 个答案:

答案 0 :(得分:3)

它与文件的编码有关。一些(大多数)unicode编码每个字符需要2个字节。这意味着每个单字节字符都以\ 0为前缀。该文件仍然完全有效,但如果您尝试使用Windows-1252类型的单字节编码来读取它,它将看起来很奇怪。您可以尝试通过utf8_decode提供它,看看是否清除它。 UTF 8是一种潜在的多字节编码,从1到4个字节(最小值为1)。 你的文本编辑器会自动识别它并将其打开为unicode,这就是为什么它在那里看起来很好。

注意:因为它使用2字节编码,特别是不是utf-8,它可能是utf-16,但是UTF-8函数可能能够解析它。

答案 1 :(得分:0)

您是否在HEX编辑器中打开了文件?您的文件中可能隐藏着字符......