php – 当浏览器将’ISO-8859-1’作为元字符集时,浏览器将页面检
我正在处理网站转移,在这个过程中我的字符集被搞砸了.起初,我转移了所有文件而没有任何改动,新服务器上的文件显示<?>特殊字符的图标.浏览一下浏览器的字符编码(Chrome和FF)就告诉我它是自动检测UTF-8.页面的元字符集设置为ISO-8859-1.复制是从多个数据库中的各个表中提取的(不要问).
在原始网站上,所有显示应该.在新网站上,<?> …我挖到它,在php.ini中找到默认的charset =“UTF-8”,将其设置为空.现在网站上的大部分页面显示都很好,浏览器识别出meta charset标签,每个人都很开心;也就是说,直到我导航到root下的文件夹. 这个文件夹中的文件,虽然它们的元字符集是ISO-8859-1,但它以某种方式告诉浏览器被读作UTF-8,这意味着我看到<?>在这些页面上.如果我将浏览器设置为ISO-8859-1,那么它显示正常.自动检测将其重置为UTF-8.有任何想法吗? 谢谢! 更新(从下面的评论中添加): 我按照martinstoeckli的建议在W3C checker上运行了页面,它告诉我HTTP内容类型是Content-Type:text / html; charset = utf-8而meta标签是< meta http-equiv =“Content-Type”content =“text / html; charset = ISO-8859-1”/> ;,这给了我一个冲突的字符编码声明错误.疯狂的是,我不能为我的生活弄清楚UTF-8声明的来源!它在任何文件中都没有,所有文件都保存了UTF-8 w / out BOM,php.ini设置为声明没有默认值,文件夹的.htaccess设置为像PatomaS建议的那样. (对于它的价值,Mozilla的Web Sniffer确认HTTP标题Content-Type of text / html; charset = utf-8.) 更新: 当然,这意味着神秘感仍然存在:当看起来所有内容配置不同时,是什么导致服务器发送UTF-8的HTTP Content-type字符集标题? 解决方法
文件中是否包含BOM(字节顺序标记).要确保使用记事本打开文件并选中“编码”菜单,您还可以选择转换为ansi作为测试选项.
BTW使用utf-8到处都是一个更好的长期方法,我可以建议. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |