PHP common.inc.php签名和无签名区别
在PHP中,常常使用包含文件来实现代码的复用,使用较广泛的方式是使用“require_once”和“include_once”函数来引用文件。在实际开发中,可能会遇到“common.inc.php”文件有签名和无签名的情况,那么这两种情况的区别是什么呢?
有签名的common.inc.php文件
有签名的common.inc.php文件指的是该文件在保存时附带了BOM(Byte Order Mark)标记,BOM是指字节顺序标记,只是在文件编码为UTF-8时使用。如果在文件中包含BOM标记,则会在浏览器中输出乱码。BOM标记通常是在一些Windows编辑器中添加的。
如果你的文件包含BOM标记,你可能会在输出时看到一些乱码。而且,在一些情况下,你可能会发现输出的一些字符在Web浏览器中显示为方块或乱码。因为在这些情况下,BOM标记会占用输出的第一个字符,导致输出的文本中出现错误的字符。
无签名的common.inc.php文件
无签名的common.inc.php文件指的是该文件在保存时没有BOM标记,通常是在一些UNIX或Linux编辑器里保存的文件。即便在Windows环境下进行编辑,只要能在没有BOM标记的情况下保存,文件也不会有BOM标记。如果你的文件没有BOM标记,那么 PHP 会认为它是一个普通的文本文件,并能在你的应用程序中正常使用。
区别
由于有/无BOM文件特别是UTF-8编码文件的编码方式不同,因此有时会出现很多难以预期的问题。对于引用该文件的应用程序,这两种类型的common.inc.php文件在某些方面会有所不同:
1. 输出区别:如果一个common.inc.php文件包含BOM标记,那么此文件中的输出和函数处理结果会被输出BOM标记覆盖,导致一些输出乱码的情况。
2. 处理过程中的不同结果:如果该文件中包含有中文,那么如果该文件中使用有BOM的UTF-8编码,则会出现处理结果不同的情况。如果是无BOM的UTF-8编码,则在处理结果中不会出现乱码等情况。
如何判断文件在保存时是否被添加了BOM标记?
打开common.inc.php文件,在文本编辑器上可以使用UTF-8编码模式,如果在该文件的行首前面出现三个非ASCII码的字符,则说明该文件包含BOM标记。在其他系统或文本编辑器中,也可以通过不同的操作方式来查看是否包含BOM标记。
在开发中,编写common.inc.php文件时需要注意是否存在BOM标记。因为只有符合规范的编码方式,才能在应用程序中正常使用,同时也需要在输出方面保持一致。这是因为在PHP文件中,BOM标记可能会导致一些难以处理的问题。对于开发者来说,没有BOM标记的文件更加方便,在编译和执行时也更加稳定。