转成UTF-8的程序上传到服务器之后却频频白屏。setcookie和header均出错。这肯定是在header之前有数据输出。
用IE查看源代码,一无所获。用FireFox查看源代码,发现有6个无法显示的空字符。这才想起来是不是编码的问题。
Google了一下,UTF-8用BOM标记字节顺序。BOM一般加在文件头,长度三字节(EF BB BF)。如果程序发现BOM,则自动按照UTF-8处理。
问题就出在BOM上面。PHP是不支持BOM的,所以PHP在处理文件的时候会把BOM直接输出,也就导致了header之前存在输出,从而setcookie和header不起作用。
知道问题,解决起来也不难了。用UltraEdit或Dreamweaver将文件保存为“UTF-8 无 BOM”就行了。
用IE查看源代码,一无所获。用FireFox查看源代码,发现有6个无法显示的空字符。这才想起来是不是编码的问题。
Google了一下,UTF-8用BOM标记字节顺序。BOM一般加在文件头,长度三字节(EF BB BF)。如果程序发现BOM,则自动按照UTF-8处理。
问题就出在BOM上面。PHP是不支持BOM的,所以PHP在处理文件的时候会把BOM直接输出,也就导致了header之前存在输出,从而setcookie和header不起作用。
知道问题,解决起来也不难了。用UltraEdit或Dreamweaver将文件保存为“UTF-8 无 BOM”就行了。